假设我有这个用于获取所有线程:
Thread |> Thread.ordered |> Repo.all |> Repo.preload([:posts])
我如何为:posts
提供order_by子句?我似乎无法在引用Ecto.Repo.preload/1
的文档中找到任何内容,因此所提供的示例都不会对确定如何正确使用此语法有帮助。
答案 0 :(得分:9)
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)])
(假设您在帖子上发布了字段)