elixir - 如何查看为 Ecto.Query 生成的原始 SQL?

标签 elixir ecto

我有一个 Ecto.QueryRepo ,这样我就可以调用Repo.all(query)并得到结果。然而,结果并不是我所期望的。

如何查看原始 SQL Repo将从 Ecto.Query 生成?

最佳答案

您可以使用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", []}

此功能在名称为 to_sql 的存储库下也可用。如果您使用的是基于 SQL 的适配器:
 iex> Repo.to_sql(:all, Post)
  {"SELECT p.id, p.title, p.inserted_at, p.created_at FROM posts as p", []}

查询可以是任何实现 Ecto.Queryable 的结构。协议(protocol)如 Post上面(这是一个导入 Ecto.Schema 的模块)。一个 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]}

关于elixir - 如何查看为 Ecto.Query 生成的原始 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770956/

相关文章:

elixir - 无法在 Phoenix/Elixir 中渲染没有布局的错误 View

elixir - 如果引发编译时警告,是否可以让编译器提前退出,构建失败?

elixir - Ecto 变更集中的转换错误

elixir - 如何测试具有所需关联的模型

elixir - 如何更改 Ecto 中的字段类型?

elixir - 使 Ecto 架构字段名称与源表列名称不同 (Elixir)

elixir - 如何从 Elixir 中的元组列表中提取整数?

stream - Elixir 中的惰性列表理解?

postgresql - 尝试创建数据库时出错 - Ecto - Phoenix

elixir - has_many,通过Ecto中的关联