加载带有标题的子部分
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}]}]}]
我正在做一些 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}]}]}]