elixir - Elixir 中的评估参数(使用 Ecto)
问题描述
看看select()
下面的行:
def query_group(user, group_by, filters \\[]) do
from(Click)
|> select([c], {c.^group_by, count(c)})
|> where([c], c.link_user_id == ^user.id)
|> where([c], ^filters)
|> group_by([c], ^group_by)
|> Repo.all
|> Enum.map(&(Tuple.to_list &1))
end
group_by
是一个原子。例如,如果group_by = :platform
,那么在select
现场,我需要得到select([c], {c.platform, count(c)})
。
解决这个问题的最佳方法是什么?
解决方案
您也可以使用field/2
, select([c], {field(c, ^group_by), count(1)})
(不确定是否group_by
需要固定在此处,但我认为是这样)
推荐阅读
- git - VS Code 中的 Git 说我有未合并的文件,但我确定我已经合并了它们
- r - 将数据框转换为 R 中的布尔值
- crystal-lang - Crystal-lang:递归 JSON 或哈希
- python - Python 的 Selenium 模块和 selenium-webdriver 节点包实现帧切换的方式不同吗?
- user-interface - 如何将函数转换为小部件以在 Jupyter 笔记本中嵌入 html
- javascript - 有人可以解释方法映射的这种特殊用途吗?
- pytorch - 如何计算每个类的熵来衡量pytorch上的模型不确定性
- reactjs - 关于 onClick 但状态不变的问题
- laravel - Laravel如何创建区域
- jenkins - 进入“quietDown”模式后,Jenkins 作业卡在“暂停(准备关机)”