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