我们说我有3个架构:Tag,Post,User。
Post和Tag之间有很多关系,连接表,Post和User之间有很多关系,有连接表。
我想选择属于给定标签和给定用户的帖子。
user_posts_query = user |> assoc(:posts)
tag_posts_query = tag |> assoc(:posts)
有什么方法可以组合这两个查询对象,当使用Repo.all()时,只获得每个查询对象的重叠结果?
答案 0 :(得分:2)
我没有机会测试它,但我认为这样的事情应该有效:
Post
|> join(:inner, [p], u in assoc(p, :users))
|> join(:inner, [p], t in assoc(p, :tags))
|> where([p, u, t], u.id == ^user.id and t.id == ^tag.id)
|> Repo.all()
这可能不是您正在寻找的但可能有用。