预加载嵌套关联查询
preload nested association query
我正在尝试在查询预加载中进行排序。这是我的查询:
query =
from(
p in Project,
preload: [rows: {from(r in Row, order_by: r.index), [images: from(r in Row, order_by: r.index)}]],
where: p.user_id == ^user_id
)
但这不起作用并给我一个语法错误:
** (SyntaxError) web/controllers/project_controller.ex:11: "{" is missing terminator "}". unexpected token: ")" at line 13
有人知道如何使用 Ecto 预加载嵌套属性吗?
您收到此 SyntaxError
,因为括号不平衡。
以下代码修复了这个问题:
query =
from(
p in Project,
preload: [rows: {from(r in Row, order_by: r.index), images: from(r in Row, order_by: r.index)}],
where: p.user_id == ^user_id
)
但实际上,如果你有 Project
,has_many
rows
和 Row
,has_many
images
,然后预加载这些关联将变得如此简单,如下所示:
from p in Project, preload: [rows: :images]
我正在尝试在查询预加载中进行排序。这是我的查询:
query =
from(
p in Project,
preload: [rows: {from(r in Row, order_by: r.index), [images: from(r in Row, order_by: r.index)}]],
where: p.user_id == ^user_id
)
但这不起作用并给我一个语法错误:
** (SyntaxError) web/controllers/project_controller.ex:11: "{" is missing terminator "}". unexpected token: ")" at line 13
有人知道如何使用 Ecto 预加载嵌套属性吗?
您收到此 SyntaxError
,因为括号不平衡。
以下代码修复了这个问题:
query =
from(
p in Project,
preload: [rows: {from(r in Row, order_by: r.index), images: from(r in Row, order_by: r.index)}],
where: p.user_id == ^user_id
)
但实际上,如果你有 Project
,has_many
rows
和 Row
,has_many
images
,然后预加载这些关联将变得如此简单,如下所示:
from p in Project, preload: [rows: :images]