2017-11-06 2 views
2

Der folgende Code funktioniert einwandfrei, wenn eine Ecto-Abfrage durch die Spalte created_at angefordert wird.Ecto query - order_by Feld in der jsonb-Spalte

sort_params = [asc: :created_at] 
 
query = from user in users, 
 
     order_by: ^sort_params, 
 
     limit: ^page_size, 
 
     offset: ^offset

Angenommen, ich eine Datenbankspalte vom Typ jsonb namens info habe, und eines der Felder im JSON-Objekt „Status“, ist es eine Möglichkeit, nach diesem Feld zu sortieren ? Hat Ecto ein gültiges Äquivalent zu so etwas wie

sort_params = [asc: :info.status]

Antwort

2

Ja,

Sie Ecto.Query.API.fragment/1 dafür verwenden können.

# you can use fragment/1 only directly in the query 

query = from user in users, 
    order_by: fragment("info->>'status' ASC"), 
    limit: ^page_size, 
    offset: ^offset 
Verwandte Themen