加载带有标题的子部分

Loading sub sections with a titles

我正在做一些 left_joins 尝试预加载一些嵌套关联。我有 sections,有 sub_sections,我想获得所有有标题的 sub_sections(与没有标题的 sub_sections 相对)。当我添加这一行时,整个查询 returns 为零,但是当我删除它时,我得到了所有内容(包括没有标题的 sub_sections )。 where: not is_nil(sub2.title).

我很难找到我做错了什么?我觉得我应该得到结果。

如有任何帮助,我们将不胜感激。谢谢!

from a in Article,
  left_join: s in assoc(a, :sections),
  left_join: d in assoc(s, :definitions),
  left_join: sub in assoc(d, :sub_sections),
  left_join: sub2 in assoc(sub, :sub_sections),
  where: a.id == ^id,
  where: not is_nil(sub2.title),
  preload: [sections: {s, [definitions: {d, [sub_sections: {sub, sub_sections: sub2}]}]}]```

您应该将条件 not is_nil(sub2.title) 应用到相应的 join,而不是整个查询。有点像下面应该工作。

subs = from sub in SubSection, where: not is_nil(sub.title)

from a in Article,
  left_join: s in assoc(a, :sections),
  left_join: d in assoc(s, :definitions),
  left_join: sub in assoc(d, :sub_sections),
  left_join: sub2 in ^subs, on: sub2.parent == sub.id,
  where: a.id == ^id,
  preload: [sections: {
    s, [definitions:
     {d, [sub_sections: {sub, sub_sections: sub2}]}]}]