我想获得一堆文章的语言,我从中获得了ID。
我正在尝试这样的事情:
Repo.all(from a in Article, where: a.id in ^article_ids) |> Ecto.assoc(:language) |> Repo.all
当第一次调用Repo返回结果时,此方法正常。但是如果第一个Repo调用返回一个空列表,我得到一个参数错误:
** (ArgumentError) cannot retrieve association :language for empty list
在凤凰城解决这个问题的好方法是什么?
答案 0 :(得分:0)
不确定如何使用Ecto.assoc/1
以优雅的方式执行此操作,但您的查询可以使用JOIN
查询重写,如下所示:
Repo.all(
from a in Article,
join: l in assoc(a, :language),
where: a.id in ^article_ids,
select: l
)