def list_links_count do

    query = 
      from l in Link,
        join: c in Click, as: :click,
        where: c.link_id == l.id,
        group_by: l.id,
        select: {l, count(l.id)}

    query |> Repo.all

  end

मेरे पास एक फ़ंक्शन है जो प्रति लिंक क्लिक की संख्या की गणना करता है। समस्या अंतिम डेटा संरचना के साथ है, जो {Link, 10} के रूप में है। मैं वास्तव में जो करना चाहता हूं वह यह है कि इसे कुल में डाल दिया है, इसलिए मैं इसे एक दृश्य में अधिक आसानी से एक्सेस कर सकता हूं, जैसे link.click_count। संभव है कि?

3
cjm2671 6 फरवरी 2019, 19:51

2 जवाब

सबसे बढ़िया उत्तर

क्या आपके पास लिंक के लिए अपने Ecto स्कीमा पर वर्चुअल फ़ील्ड है? यदि नहीं, तो आप इसे जोड़ना चाहेंगे:

field(:click_count, :integer, virtual: true)

तब आपका चयन कुछ इस तरह दिख सकता है:

select: %{l | click_count: count(l.id)}

चूँकि अब आपके पास Link संरचना में एक click_count कुंजी है, आप उस कुंजी को रख सकते हैं और अभी भी Links की सूची बना सकते हैं। तो आपको link.click_count तक पहुंचने में सक्षम होना चाहिए।

2
Brett Beatty 6 फरवरी 2019, 21:30

Kernel.elem/2 का इस्तेमाल करें:

{Link, 10} |> elem(1) 
#⇒ 10

तो, आपके कोड के भीतर:

query
|> Repo.all()
|> how_do_you_get_tuple()
|> elem(1)
1
Aleksei Matiushkin 6 फरवरी 2019, 21:34