2016-04-17 9 views
18

क्या मेरे डेटाबेस में प्रविष्टियों की संख्या देखने का सबसे तेज़ तरीका है? मैं अपनी पोस्ट/इंडेक्स व्यू में पोस्ट की संख्या देखना चाहता हूं।एक्टो रिपोजिटरी में प्रविष्टियों की संख्या की गणना करें

कहें कि मेरे पास एक पोस्ट मॉडल है और मेरे डेटाबेस में सहेजे गए पदों का एक समूह है। रेल में मैं एक दृश्य फ़ाइल में कुछ इस तरह कर सकता है:

<h1><%= @posts.length %> Posts</h1> 

या

<h1><%= @posts.size %> Posts</h1> 

या

<h1><%= @posts.count %> Posts</h1> 

क्या फीनिक्स फ्रेमवर्क/अमृत बराबर है?

उत्तर

23

यदि आप पहले से ही अपने नियंत्रक में Repo.all का उपयोग कर स्मृति में पोस्ट लोड कर चुके हैं, तो आप सूची में आइटमों की संख्या की गणना करने के लिए length/1 का उपयोग कर सकते हैं। यह रुबी/रेल में .length के बराबर है।

length(@posts) 

आप के बजाय डेटाबेस में गिनती क्वेरी चलाने के लिए चाहते हैं, आप कर सकते हैं:

Repo.one(from p in Post, select: count("*")) 

आप क्वेरी को where: फिल्टर जोड़ सकते हैं जैसे पर पोस्ट को प्रतिबंधित करने के लिए एक विशिष्ट उपयोगकर्ता द्वारा बनाया गया। यह रेल में .count करने के बराबर है।

53

विकल्प जो Dogbert प्रदान किए गए हैं वे दोनों सही हैं और Ecto 1.x के लिए उपयोग किए जाने चाहिए।

Ecto 2.0 में आप Repo.aggregate/4

Repo.aggregate(Post, :count, :id) 
+4

उपयोग कर सकते हैं यह एक भी composable प्रश्नों का निर्माण करने में मदद करता है –

संबंधित मुद्दे