2017-04-15 157 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)