我有一个大致如下的关系:

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}]
})

它只会将 Parent 带到有 children1 和 children2 的地方(即内部连接)。
如果我做:
Parent->findOne({
  include: [
    {model: Children1, required: false},
    {model: Children2, required: false}
  ]
})

它将带来 Parent,如果有,它将带来 Children1 和/或 Children2。 (即左连接)。

我想要做的是当且仅当 Children1 或 Children2 或 ChildrenN 存在时才带上 Parent。可以是 ChildrenN 中的任何一个,也可以是他们所有人。只要有至少1个,我就想带Parent。

有任何想法吗?

最佳答案

required: true 添加到您的包含对象,以使每个连接成为正确的连接。你有四个单独的 child table 有什么理由吗?

关于mysql - Sequelize : Parent with at least one children,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38504835/

10-16 13:30