【发布时间】:2019-11-23 10:47:51
【问题描述】:
有没有人对在急切加载时如何使用makeHidden() 有任何建议?这是我的代码:
$work=Work::with([
'work_category'=>function($query){
$query->with(['companies'=>function($query){
$query->select('companies.id','companies.name');
}]);
},
'prices',
])
->findOrFail($id);
Work 有一个belongsTo('App\WorkCategory') 关系,WorkCategory 有一个belongsToMany('App\Company') 关系通过一个轴。
如果我尝试将->makeHidden('pivot') 链接到$query->select('companies.id','companies.name'); - 我会得到BadMethodCall exception: Call to undefined method Illuminate\Database\Eloquent\Relations\BelongsToMany::makeHidden()
这里有什么我遗漏的吗?
这是有问题的 makeHidden() 调用的代码
$work=Work::with([
'work_category'=>function($query){
$query->with(['companies'=>function($query){
$query->select('companies.id','companies.name')->makeHidden('pivot');
}]);
},
'prices',
])
->findOrFail($id);
我的临时解决方法是将protected $hidden=['pivot']; 添加到我的公司模型中,但是如果我确实需要它能够访问数据透视表并在我的控制器中使用$model->relation->makeHidden('attribute') 之前修剪掉多余的数据,那就太好了发送。
【问题讨论】:
标签: laravel eloquent nested eager-loading