我有一个Ecto.Query和一个Repo,这样我就可以打电话Repo.all(query)并获得结果.但是,结果并不是我所期望的.
如何查看Repo将从中生成的原始SQL Ecto.Query?
我正在尝试将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.
我需要对查询进行哪些更改才能实现此目的?谢谢你的帮助.
通常mix.test清理测试数据库,但它不起作用.
这可能是因为我正在玩制作users架构,但不想使用我制作的东西,所以我摆脱了它.然后我重新开始为用户创建了一个与第一个不同的新模式.
当我再次尝试运行混合测试时,出现了一个错误,即某些字段不存在,应该存在新模式.
如何在给定的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) 什么是查看数据库中条目数的最快方法?我想查看帖子/索引视图中的帖子数量.
假设我有一个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等同物?
在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)
我post有comments预装的:
post = MyApp.Post
|> MyApp.Repo.get(100)
|> MyApp.Repo.preload(:comments)
Run Code Online (Sandbox Code Playgroud)
我甚至不确定从哪个approved范围开始MyApp.Comment.
在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,在宏扩展后,查询是否真的有机会重新绑定?
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是否存在".什么是"必需的钥匙"?这只是模型中的必填字段吗?
这个功能:
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)
为什么这样以及如何解决?
我使用数字海洋从你好的例子中创建了一个凤凰项目.我输入了etc/motd.tail文件中的用户名和密码.我一直收到以下错误消息.我是初学者,由于某种原因,我无法正确安装ecto.
**(混合)无法创建Hello.Repo的数据库,原因如下:psql:FATAL:用户"elixir"的密码验证失败致命:用户"elixir"的密码验证失败
您可以使用以下Postgress数据库凭据:*用户:elixir*通行证:***
安装.任何帮助,将不胜感激.