如何在给定的ID列表中查找帖子?
这不起作用:
Post.where({ id: [1, 2]})
# SELECT * FROM posts WHERE id IN (1, 2)
Rails中的示例:
{{1}}
答案 0 :(得分:42)
以下内容应该有效:
posts = Post |> where([p], p.id in [1, 2]) |> Repo.all
答案 1 :(得分:21)
接受的答案给了我undefined function p/0
,所以我来到了这个:
from(p in Post, where: p.id in [1, 2]) |> Repo.all
答案 2 :(得分:8)
其他海报同时给出了"关键字"和"表达式"需要的模式,但我想评论并指出,如果要插入列表中的值,则需要在变量之前使用^
运算符。在尝试其中任何一个之前,您还需要导入包含宏的模块(特殊因为宏具有不同的编译需求)。这都是ecto 2.1.4,顺便说一下。所以:
import Ecto.Query
...
id_list = [1,2,4,5,6]
# "expressions"
Post
|> where([p], p.id in ^id_list)
# "keywords"
from(p in Post, where: p.id in ^id_list)