etimologia docs elixir phoenix-framework ecto

elixir - docs - ecto repo



¿Cómo construir WHERE IN array con la cláusula Ecto? (3)

La respuesta aceptada me da una undefined function p/0 , así que llegué a esto:

from(p in Post, where: p.id in [1, 2]) |> Repo.all

¿Cómo encontrar publicaciones en la lista de identificadores dados?

Esto no está funcionando:

posts = Post |> where(id: [1, 2]) |> Repo.all

Ejemplo en rieles:

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


Lo siguiente debería funcionar:

posts = Post |> where([p], p.id in [1, 2]) |> Repo.all


Otros carteles dieron los patrones de "palabras clave" y "expresiones" necesarios, pero quería comentar y señalar que si está interpolando los valores de una lista, necesita el operador ^ antes de la variable. También debe importar el módulo que contiene las macros (especial porque las macros tienen diferentes necesidades de compilación) antes de probar cualquiera de estas. Esto es todo con ecto 2.1.4, por cierto. Asi que:

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)