Ecto关联空列表

时间:2018-02-02 18:37:41

标签: elixir phoenix-framework ecto

我想获得一堆文章的语言,我从中获得了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

在凤凰城解决这个问题的好方法是什么?

1 个答案:

答案 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
)