标签: ecto

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

我有一个Ecto.Query和一个Repo,这样我就可以打电话Repo.all(query)并获得结果.但是,结果并不是我所期望的.

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

elixir ecto

30
推荐指数
2
解决办法
8719
查看次数

将postgres日期表示转换为ISO 8601字符串

我正在尝试将Postgres日期表示格式化为ISO 8601字符串.我假设有一个Postgres函数可以做到,但我发现文档简短的例子.

我的疑问是

SELECT
  now()::timestamp
Run Code Online (Sandbox Code Playgroud)

返回

[{{2016, 8, 9}, {3, 56, 55, 754181}}]
Run Code Online (Sandbox Code Playgroud)

我正在尝试将日期变成看起来更像的格式 2016-8-9T03:56:55+00:00.

我需要对查询进行哪些更改才能实现此目的?谢谢你的帮助.

postgresql date iso8601 elixir ecto

29
推荐指数
5
解决办法
2万
查看次数

如何回滚,重置或删除Ecto测试数据库?

通常mix.test清理测试数据库,但它不起作用.

这可能是因为我正在玩制作users架构,但不想使用我制作的东西,所以我摆脱了它.然后我重新开始为用户创建了一个与第一个不同的新模式.

当我再次尝试运行混合测试时,出现了一个错误,即某些字段不存在,应该存在新模式.

testing elixir ecto phoenix-framework

29
推荐指数
2
解决办法
9880
查看次数

如何使用Ecto构建WHERE IN数组子句?

如何在给定的ID列表中查找帖子?

这不起作用:

posts = Post |> where(id: [1, 2]) |> Repo.all
Run Code Online (Sandbox Code Playgroud)

Rails中的示例:

Post.where({ id: [1, 2]})
# SELECT * FROM posts WHERE id IN (1, 2)
Run Code Online (Sandbox Code Playgroud)

elixir ecto phoenix-framework

28
推荐指数
3
解决办法
1万
查看次数

计算Ecto存储库中的条目数

什么是查看数据库中条目数的最快方法?我想查看帖子/索引视图中的帖子数量.

假设我有一个Post模型和一堆保存在我的数据库中的帖子.在Rails中,我可以在视图文件中执行以下操作:

<h1><%= @posts.length %> Posts</h1>
Run Code Online (Sandbox Code Playgroud)

要么

<h1><%= @posts.size %> Posts</h1>
Run Code Online (Sandbox Code Playgroud)

要么

<h1><%= @posts.count %> Posts</h1>
Run Code Online (Sandbox Code Playgroud)

什么是凤凰城框架/ Elixir等同物?

elixir ecto phoenix-framework

27
推荐指数
2
解决办法
9643
查看次数

在Phoenix/Ecto中混合范围和关联

在Rails中,如果我有以下设置:

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post

  def self.approved
    where(approved: true)
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我可以做这样的事情:

post = Post.find(100)
comments = post.comments.approved
Run Code Online (Sandbox Code Playgroud)

快速获得给定的所有批准的评论Post.

我怎样才能在Ecto中做类似的事情?

defmodule MyApp.Post do
  use Ecto.Model

  schema "posts" do
    #columns omitted
    has_many :comments, MyApp.Comment
  end
end

defmodule MyApp.Comment do
  use Ecto.Model

  schema "comments" do
    #columns omitted
    belongs_to :post, MyApp.Post
  end
end
Run Code Online (Sandbox Code Playgroud)

postcomments预装的:

post = MyApp.Post
       |> MyApp.Repo.get(100)
       |> MyApp.Repo.preload(:comments)
Run Code Online (Sandbox Code Playgroud)

我甚至不确定从哪个approved范围开始MyApp.Comment.

elixir ecto phoenix-framework

26
推荐指数
2
解决办法
2669
查看次数

为什么在Ecto查询中需要引脚操作符?

在Elixir中,引脚运算符用于防止变量重新绑定.但是,对于像Ecto这样的查询

from u in User, where: u.username == ^username
Run Code Online (Sandbox Code Playgroud)

的作者编程凤凰状态(第7章),其

请记住,^运算符(称为pin运算符)意味着我们希望保持^ username相同.

但这听起来不对,因为显然,查询中的比较不会导致任何重新绑定变量.

这本书的作者(JoséValim与谁合着)是错误的吗?Ecto中的引脚运算符只是查询Ecto DSL的构造而不是通常的Elixir引脚运算符吗?或者username,在宏扩展后,查询是否真的有机会重新绑定?

elixir ecto

26
推荐指数
2
解决办法
1536
查看次数

Phoenix的scrub_params是否像Rails一样强大的参数?

Phoenix scrub_params方法的文档对我来说有点不清楚.看起来这个功能类似于Rails强参数功能.但是,当你在像这样的控制器中使用它时,

plug :scrub_params, "user" when action in [:create]
Run Code Online (Sandbox Code Playgroud)

...您没有明确说明要将哪些参数列入白名单.我已经查看了代码scrub_params,但是我对Elixir的说法非常苛刻,我不太确定发生了什么.

此方法只是查看模型并使用必需和可选的字段模块属性来列入白名单参数吗?

此外,scrub_params文档说"检查required_key是否存在".什么是"必需的钥匙"?这只是模型中的必填字段吗?

ruby-on-rails elixir ecto phoenix-framework

25
推荐指数
1
解决办法
5477
查看次数

不能在match子句之外使用^ xxx

这个功能:

defp entries(query, page_number, page_size) do
  offset = page_size * (page_number - 1)

  query
  |> limit([_], ^page_size) # error
  |> offset([_], ^offset)
  |> Repo.all
end
Run Code Online (Sandbox Code Playgroud)

给出了一个例外:

cannot use ^pg_size outside of match clauses
Run Code Online (Sandbox Code Playgroud)

为什么这样以及如何解决?

elixir ecto phoenix-framework

25
推荐指数
1
解决办法
4777
查看次数

Ecto Postgres安装错误密码验证失败

我使用数字海洋从你好的例子中创建了一个凤凰项目.我输入了etc/motd.tail文件中的用户名和密码.我一直收到以下错误消息.我是初学者,由于某种原因,我无法正确安装ecto.

**(混合)无法创建Hello.Repo的数据库,原因如下:psql:FATAL:用户"elixir"的密码验证失败致命:用户"elixir"的密码验证失败

您可以使用以下Postgress数据库凭据:*用户:elixir*通行证:***

安装.任何帮助,将不胜感激.

postgresql ecto phoenix-framework

24
推荐指数
2
解决办法
9699
查看次数