2016-04-21 5 views

Antwort

20

können Sie Ecto.Adapters.SQL.to_sql/3 verwenden:

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

Die Abfrage kann eine beliebige Struktur sein, die das Ecto.Queryable Protokoll wie Post oben (das ist ein Modul, das Ecto.Schema ist importiert) implementiert. Eine Ecto.Query kann auch übergeben werden:

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

Danke. In meinem Fall musste ich die "query" -Struktur anstelle von "Post" übergeben. –

+0

@NathanLong Sie können alles übergeben, was das Queryable-Protokoll implementiert. Das beinhaltet natürlich eine Abfrage, aber auch alles, was 'Ecto.Schema' verwendet. Ich werde meine Antwort aktualisieren. – Gazler

+0

Gute Info - danke! –