【发布时间】:2019-12-23 06:30:31
【问题描述】:
我有 3 个架构:Post、Author、Assistant。
Postbelongs_to :author
Author has_many :posts 和 has_one :assistant
Assistantbelongs_to :author
我想构建一个只获取Posts 的查询,其中Author 具有Assistant。
到目前为止,我只能将Author 加入Post。我不知道如何根据Author 的Assistant 的存在来查询Posts。
Post
|> join(:inner, [p], a in assoc(p, :author))
|> Repo.all()
编辑 1
我想我已经取得了一些进展,这个查询似乎正在处理我现在在数据库中的几条记录,但不确定它是否是传统方式。
Post
|> join(:inner, [p], a in assoc(p, :author), as: :author)
|> join(:left, [author: a], asst in assoc(a, :assistant), as: :assistant)
|> where([assistant: asst], not is_nil(asst.id)))
|> Repo.all()
【问题讨论】:
标签: postgresql elixir ecto