2016-04-21 25 views

risposta

20

È possibile utilizzare 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", []} 

La query può essere qualsiasi struct che implementa il protocollo Ecto.Queryable come Post sopra (che è un modulo che importa Ecto.Schema). Un Ecto.Query può anche essere passato:

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

Grazie. Nel mio caso, avevo bisogno di passare la struttura 'query' al posto di' Post'. –

+0

@NathanLong È possibile passare tutto ciò che implementa il protocollo Queryable. Ciò include una query (ovviamente) ma anche qualsiasi cosa che usi 'Ecto.Schema'. Aggiornerò la mia risposta – Gazler

+0

Buone informazioni - grazie! –