如何在Fluent(Vapor)中查询OptionalParent关系的值为nil的记录?

移动开发 2026-07-12

以下是Fluent关于一个 OptionalParent 关系的示例:示例

final class Planet: Model {
    // Example of an optional parent relation.
    @OptionalParent(key: "star_id")
    var star: Star?
}

我怎么查询没有 star 父级的行星?我尝试了这个,但不起作用:

let wanderers = try await Planet.query(on: myDb)
   .filter(\.$star.id == nil) //error: Cannot infer key path type from context; consider explicitly specifying a root type

我也尝试过 .filter(\.$star == nil),并收到一个更详细的错误信息,提示无法对这些操作数应用 ==

解决方案

Fluent 4的正确语法是:

let wanderers = try await Planet.query(on: myDb)
   .filter(\.$star.$id == nil)

同样,$ 也必须放在键路径的 id 部分。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章