构建自定义查询和嵌套关联定义

Bit*_*ise 1 elixir ecto phoenix-framework

我正在尝试将has_many关联预加载到传入的结构和传递的结构关联的has_many关联.

以下是我现在正在使用的内容:

project =
 Repo.get!(Project, id)
 |> Repo.preload([rows: {query, [images: from i in Image, order_by: i.index]}])
Run Code Online (Sandbox Code Playgroud)

但是这会返回此错误:

This error may happen when you forget a comma in a list or other container:

    [a, b c, d]

Elixir cannot compile otherwise. Syntax error before: ','
Run Code Online (Sandbox Code Playgroud)

这虽然工作得很好:

project =
  Repo.get!(Project, id)
  |> Repo.preload([rows: {query, [:images]}])
Run Code Online (Sandbox Code Playgroud)

但在这个查询中,我无法按照我想要的图像进行排序.任何人都可以帮我吗?

Dog*_*ert 5

表达方式

[images: from i in Image, order_by: i.index]
Run Code Online (Sandbox Code Playgroud)

因为逗号而含糊不清.它可以解释为:

[images: from(i in Image, order_by: i.index)]
Run Code Online (Sandbox Code Playgroud)

或作为:

[images: from(i in Image), order_by: i.index]
Run Code Online (Sandbox Code Playgroud)

您需要添加明确的括号来解决歧义.在这种情况下,您需要:

[images: from(i in Image, order_by: i.index)]
Run Code Online (Sandbox Code Playgroud)