我正在尝试跨多个表进行连接(三个表加上中间的连接表)。我认为 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?