在 AdonisJS 5 中,可以使用 withPreloads
方法来预加载模型,即使外键为 null。
首先,确保在模型之间正确设置了关系。例如,假设我们有两个模型:User
和 Post
,并且 Post
模型具有一个可选的外键 user_id
,表示帖子的创建者。
在 User
模型中,我们可以定义 post 方法来获取用户的所有帖子:
class User extends Model {
posts() {
return this.hasMany('App/Models/Post')
}
}
在 Post
模型中,我们可以定义 user 方法来获取帖子的创建者:
class Post extends Model {
user() {
return this.belongsTo('App/Models/User')
}
}
现在,我们可以在控制器或服务中使用 withPreloads
方法来预加载模型,即使外键为 null。以下是一个示例:
class PostController {
async index({ response }) {
const posts = await Post.query().withPreloads('user').fetch()
return response.json(posts)
}
}
在上面的示例中,我们使用 withPreloads
方法来预加载 user
模型。这样,即使 user_id
外键为 null,也能获取到帖子的创建者。
注意:在预加载模型时,要确保在模型之间正确设置了关系,并且外键字段的命名符合约定。