दी गई सूची में पदों को कैसे खोजें?एक्टो के साथ सरणी खंड में कहां निर्माण करें?
यह काम कर रहा है नहीं:
posts = Post |> where(id: [1, 2]) |> Repo.all
उदाहरण रेल में:
Post.where({ id: [1, 2]})
# SELECT * FROM posts WHERE id IN (1, 2)
दी गई सूची में पदों को कैसे खोजें?एक्टो के साथ सरणी खंड में कहां निर्माण करें?
यह काम कर रहा है नहीं:
posts = Post |> where(id: [1, 2]) |> Repo.all
उदाहरण रेल में:
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
अन्य पोस्टर ने "कीवर्ड" और "एक्सप्रेशन" पैटर्न दोनों की आवश्यकता थी, लेकिन मैं टिप्पणी करना चाहता था और इंगित करना चाहता हूं कि यदि आप किसी सूची से मूल्यों को इंटरपोल कर रहे हैं, तो आपको चर से पहले ^
ऑपरेटर की आवश्यकता है। इनमें से किसी भी कोशिश करने से पहले आपको मॉड्यूल को आयात करने की आवश्यकता है जिसमें मैक्रोज़ (विशेष क्योंकि मैक्रोज़ की अलग संकलन आवश्यकताएं हैं) शामिल हैं। यह सब एक्टो 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)
रिटर्न 'अपरिभाषित समारोह पी/0' –
@ denis.peplin, आप के लिए' आयात Ecto.Query' है। ('Repo.app' करने के लिए algo' alias MyApp.Repo' को मत भूलना – dcarneiro