Elixir EXTO:在集合中订购预加载的数据与有许多关联
假设我有一个用于获取所有线程的工具:Elixir EXTO:在集合中订购预加载的数据与有许多关联,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,假设我有一个用于获取所有线程的工具: Thread |> Thread.ordered |> Repo.all |> Repo.preload([:posts]) 如何为:posts提供order_by子句?在文档中,我似乎找不到任何引用exto.Repo.preload/1的内容,因此提供的示例似乎都没有对正确使用此语法有所帮助 通过该模块,还可以很容易地将某些查询应用于预加载之类的事情 我们实现这一点的方法是将查询传递到preload函数中,然后将预加载的结果限制到该查询
Thread |> Thread.ordered |> Repo.all |> Repo.preload([:posts])
如何为:posts
提供order_by子句?在文档中,我似乎找不到任何引用exto.Repo.preload/1
的内容,因此提供的示例似乎都没有对正确使用此语法有所帮助 通过该模块,还可以很容易地将某些查询应用于预加载之类的事情
我们实现这一点的方法是将查询传递到preload函数中,然后将预加载的结果限制到该查询
例如,在您的情况下:
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)])
(假设您在帖子上有一个published at字段)请查看此处的“预加载查询”部分:。它准确地描述了你想要的。谢谢你的帮助,它很有效!我还需要
导入exto.Query
如果其他人发现这个线程并且有相同的问题。这不再有效了。现在您需要编写一个查询,然后在将其传递到预加载时锁定该查询,例如:comments\u query=from c in Comment,order\u by:c.popularity,limit:5 Repo.all from p in Post,preload:[comments:^comments\u query]
如果您想按另一个表中的列(通过联接)排序,是否可能