2017-04-15 192 views
0

打电话Repo.order_by我试图订购从一个数据库实体:无法正确

def index(conn, _params) do 
    items = Repo.all(MyModel) 
      |> Repo.preload(:model2) 
      |> Repo.preload(:model3) 
      |> Repo.order_by([x], desc: x.created_at) 

但我有一个例外:undefined function x/0

如何解决呢?

+0

尝试使用'|> Ecto.Query.order_by([x],desc:x.created_at)'代替。 – Dogbert

+0

@Dogbert'protocol Ecto.Queryable not implemented for [%MyModel {........},%MyModel {........}]' – user7863932

+0

@Dogbert,修正,谢谢。 – user7863932

回答

2

Repo.all返回结构列表。在查询完毕后,您不能要求数据库订购它。尝试在将它传递给Repo.all之前构建查询。还请注意,您需要Ecto.Query.order_by而不是Repo.order_by

items = 
    MyModel 
    |> Ecto.Query.order_by([x], desc: x.created_at) 
    |> Repo.all() 
    |> Repo.preload(:model2) 
    |> Repo.preload(:model3)