我正在尝试跨多个表进行连接(三个表加上中间的连接表)。我认为 korma 正在懒惰地评估最后一次加入。我要做的是添加一个限制连接中第一个表的结果的条件,但我只对连接中最后一个表的字段感兴趣。
例如,假设我有clubs
,people
和hobbies
表,以及people-to-hobbies
最后两个的连接表。每个俱乐部可以有很多人,每个人可以有很多爱好。
我正在尝试获取属于特定俱乐部的人的所有爱好的完整详细信息,但我不想要club
表格中的任何字段。连接表意味着 korma 将创建两个查询,一个用于获取特定俱乐部中的所有人员,另一个用于通过people-to-hobbies
连接表检索该人的爱好。
我的 korma 查询看起来像这样:
(select clubs
(with people
(with hobbies
(fields :hobby-name :id)
(where {:clubs.name "korma coders"}))))
问题是我还没有指定我要从哪些字段中选择clubs
和people
,默认是选择*
。我怎样才能不包含这些表中的字段?这是否可能,或者hobbies
延迟加载的事实是否意味着 korma 必须在第一个查询中返回一些结果(这让我得到一个过滤的人员列表),所以当我稍后来询问它的爱好时,它有运行第二个查询所需的 ID?