【发布时间】:2018-11-10 09:27:14
【问题描述】:
我有一个属于User 的Notifications 模型。我想在选择通知集合时加载用户,并且只加载带有names 和emails 的模型。但是,当使用 select 方法时,查询返回 null。
$notifications->load(['user' => function($query){
$query->select(["name","email"]);
}]);
如果select() 方法的参数如下所示,则给出所有字段:
$notifications->load(['user' => function($query){
$query->select(["*"]
}]);
【问题讨论】:
-
只是一个问题:为什么要在急切加载时选择?如果要过滤响应的结果,可以将
protected $hidden = []添加到模型中。 -
您使用 $notifications 而不是 Notification 模型是否有特定原因?
-
如果你已经创建了一个集合,你不能强制转换->加载该集合,至少加载方法不会出现在 laravel 文档laravel.com/docs/5.6/eloquent-collections#available-methods的集合可用方法上
-
只有在您选择外键列 (
id) 时才有效加载。
标签: sql laravel eloquent eager-loading