添加虚拟字段的一个对象

问题描述 投票:3回答:2
  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}的。我真正想要做的是有它put_in总,这样我就可以更轻松地访问它在一个视图,类似link.click_count。那可能吗?

elixir phoenix-framework ecto
2个回答
2
投票

你有没有对你的链接模式外生的虚拟现场?如果没有,你需要添加它:

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

然后,你的选择会是这个样子:

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

既然你现在在你的click_count结构一个Link键,你可以把钥匙,仍然有Links的列表。所以,你应该能够访问link.click_count


1
投票

使用Kernel.elem/2

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

所以,你的代码中:

query
|> Repo.all()
|> how_do_you_get_tuple()
|> elem(1)
© www.soinside.com 2019 - 2024. All rights reserved.