特定のIDリストで投稿を見つける方法は?
これは機能していません:
posts = Post |> where(id: [1, 2]) |> Repo.all
Railsの例:
Post.where({ id: [1, 2]})
# SELECT * FROM posts WHERE id IN (1, 2)
以下が動作するはずです:
posts = Post |> where([p], p.id in [1, 2]) |> Repo.all
受け入れられた回答はundefined function p/0
私に、だから私はこれに来ました:
from(p in Post, where: p.id in [1, 2]) |> Repo.all
他のポスターは、必要な「キーワード」と「式」の両方のパターンを与えましたが、リストから値を補間する場合、^
演算子は変数の前にあります。また、これらのいずれかを試す前に、マクロを含むモジュールをインポートする必要があります(マクロには異なるコンパイルのニーズがあるため特別です)。これは、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)