Elixir 如何使用join组合EXTO查询

Elixir 如何使用join组合EXTO查询,elixir,ecto,Elixir,Ecto,我有三种型号User,Group,UserMembership 它们之间的关系是密切的 defmodule Samajika.Group do has_many :user_memberships, MyApp.UserMembership has_many :users, through: [:user_memberships, :user] end UserMembership模型有一个type列,用于存储成员资格的类型。例如,它可能存储所有者,租户等 现在我想查询组,并获取其成员

我有三种型号
User
Group
UserMembership

它们之间的关系是密切的

defmodule Samajika.Group do
  has_many :user_memberships, MyApp.UserMembership
  has_many :users, through: [:user_memberships, :user]
end
UserMembership
模型有一个
type
列,用于存储成员资格的类型。例如,它可能存储
所有者
租户

现在我想查询
,并获取其成员,这些成员只是租户

Ecto.assoc(group, :users) |> Repo.all
以上内容为我提供了所有用户。查询如下所示

#Ecto.Query<from u0 in Samajika.User, join: u1 in Samajika.UserMembership,
 on: u1.group_id in ^[1], where: u0.id == u1.user_id, distinct: true>
我就是这么做的

Ecto.assoc(group, :users) |> Group.tenant
但是,这会在
users
表中添加
where
子句,而不是join表
user\u成员身份


我应该在我的
tenant
函数中修改什么以在联接表中添加条件?

from
调用中向
中的
传递列表:

def tenant(query) do
  from [_u, c] in query, where: c.type == "tenant"
end
第一个参数是主表,第二个参数是第一个联接

def tenant(query) do
  from [_u, c] in query, where: c.type == "tenant"
end