2016-04-21 10 views

Odpowiedz

20

Można użyć Ecto.Adapters.SQL.to_sql/3:

iex> Ecto.Adapters.SQL.to_sql(:all, Repo, Post) 
{"SELECT p.id, p.title, p.inserted_at, p.created_at FROM posts as p", []} 

Zapytanie może być dowolna struktura, która implementuje protokół Ecto.Queryable jak Post powyżej (który jest modułem, który importuje Ecto.Schema). Można również przekazać Ecto.Query:

iex> query = Ecto.Query.where(Post, [p], p.views > 10) 
iex> Ecto.Adapters.SQL.to_sql(:all, Repo, query) 
{"SELECT p.id, p.title, p.inserted_at, p.created_at FROM posts as p WHERE p.views > $1", [10]} 
+0

Dzięki. W moim przypadku musiałem przekazać strukturę 'query' w miejsce' Post'. –

+0

@NathanLong Możesz przekazać wszystko, co implementuje protokół Queryable. Obejmuje to zapytanie (oczywiście), ale także wszystko, co używa 'Ecto.Schema'. Zaktualizuję moją odpowiedź. – Gazler

+0

Dobre informacje - dziękuję! –

Powiązane problemy