2016-04-23 19 views

risposta

32

Il seguente dovrebbe funzionare:

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

Restituisce 'funzione p non identificato/0' –

+1

@ denis.peplin, devi' Ecto.Query' importazione. (non dimenticare di modificare "alias MyApp.Repo" per fare "Repo.app" – dcarneiro

17

risposta accettata dà undefined function p/0 a me, così sono venuto a questo:

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

Altri poster hanno entrambi i pattern "parole chiave" e "espressioni" necessari ma volevo commentare e sottolineare che se si interpongono i valori da un elenco, è necessario l'operatore ^ prima della variabile. È inoltre necessario importare il modulo che contiene le macro (speciale perché le macro hanno esigenze di compilazione diverse) prima di provare una di queste. Questo è tutto con ecto 2.1.4, btw. Quindi:

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)