Ecto:使用 has_many 关联对集合中的预加载数据进行排序
Ecto: Order preloaded data in collection with has_many association
假设我有这个用于获取所有线程:
Thread |> Thread.ordered |> Repo.all |> Repo.preload([:posts])
如何为 :posts
提供 order_by 子句?我似乎无法在文档中找到任何引用 Ecto.Repo.preload/1
的内容,因此所提供示例中的 none 似乎有助于弄清楚如何正确使用此语法。
Ecto.Query 模块使得将某些查询应用于预加载等事情变得非常容易。
我们实现这一点的方法是将查询传递给预加载函数,然后将预加载的结果限制为该查询。
例如,在您的情况下:
import Ecto.Query # => Needed to use the ecto query helpers
Thread
|> Thread.ordered
|> Repo.all
|> Repo.preload([posts: (from p in Post, order_by: p.published_at)])
(假设您在帖子上发布了字段)
假设我有这个用于获取所有线程:
Thread |> Thread.ordered |> Repo.all |> Repo.preload([:posts])
如何为 :posts
提供 order_by 子句?我似乎无法在文档中找到任何引用 Ecto.Repo.preload/1
的内容,因此所提供示例中的 none 似乎有助于弄清楚如何正确使用此语法。
Ecto.Query 模块使得将某些查询应用于预加载等事情变得非常容易。
我们实现这一点的方法是将查询传递给预加载函数,然后将预加载的结果限制为该查询。
例如,在您的情况下:
import Ecto.Query # => Needed to use the ecto query helpers
Thread
|> Thread.ordered
|> Repo.all
|> Repo.preload([posts: (from p in Post, order_by: p.published_at)])
(假设您在帖子上发布了字段)