让我先回答您的问题,是的,您可以预加载NULL的Fk。
PS-除了查询之外,您没有提供任何详细信息,因此我将做出一些假设。
解释-
- 首先,您必须在使用预加载之前定义关系
- Relationsgip 应该在包含FK的表中定义,在我们的例子中,它的User表。例如
//User.ts or User.js
import Profile from '/path/to/profile';
...
@column()
public profileId: number;
@belongsTo(() => Profile)
public profile: BelongsTo<typeof Profile>;
...
如您所见,我在用户表中创建了一个关系。IE
@belongsTo(() => Profile)
public profile: BelongsTo<typeof Profile>;
完成此操作后,您可以查询用户和预加载配置文件。
const user = await User.query().preload("profile")
现在,如果用户有个人资料,那么它将被预加载(加入),输出将是这样的
User {
id: <random-number>,
profileId: <random-number>,
profile: {
...
},
...
}
如果 profileId 为空,那么输出将是这样的
User {
id: <random-number>,
profileId: null,
...
}
ps -user
变量是用户实例的数组,我给出了只有 1 个用户实例的示例。
我希望这个解释对你有所帮助。