у меня есть соотношение, примерно следующим образом:Sequelize: Родитель, по крайней мере, один детей
Parent: [id, name]
Children1: [id, parent_id, name]
Children2: [id, parent_id, name]
Children3: [id, parent_id, name]
Children4: [id, parent_id, name]
Parent
.hasMany -> Children1
.hasMany -> Children2
.hasMany -> Children3
.hasMany -> Children4
Так что, если я делаю:
Parent->findOne({
include: [{model: Children1}, {model: Children2}]
})
Это только принесет Родитель, где есть детей1 и children2 (т.е. Внутреннее соединение). Если я:
Parent->findOne({
include: [
{model: Children1, required: false},
{model: Children2, required: false}
]
})
Это принесет Родитель и если есть она принесет детей1 и/или Children2. (т.е. левое соединение).
Что я хочу сделать, это привести родителя ЕСЛИ И ТОЛЬКО ЕСЛИ либо дети1, либо Дети2 или ДетиN существуют. Может быть любой из детейN или может быть все из них. Пока есть хотя бы 1, я хочу привести Родитель.
Любые идеи?
Это был всего лишь пример, каждый «Детей» - это другой стол с другим дерьмом. Итак, требуется: true делает правильное соединение, в то время как отсутствие необходимых атрибутов создает внутреннее соединение? – yBrodsky
Я попробовал то, что вы сказали, он по-прежнему создает внутреннее соединение, с обязательным: true – yBrodsky
Знаете, что у меня всегда было предложение where, которое включено в мой список при использовании требуемого true. Возможно, это требование. Сейчас у меня нет ноутбука, но я проверю его, когда буду. –