Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir EXTO:在集合中订购预加载的数据与有许多关联_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

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]
如果您想按另一个表中的列(通过联接)排序,是否可能