【发布时间】:2019-12-20 13:24:47
【问题描述】:
unsetRelation('relation')在调用pluck('relation')时不会被移除
$data = Model::with([
'child', 'child.one', 'child.two'
])->get()
删除“child.one”和“child.two”,但保留孩子
$data->transform(function ($item, $key) {
if($key == 1){ //remove the second item
$item->unsetRelation('child'); //same behavior if we call $item->unsetRelations();
}
return $item;
});
$output = $data->pluck('child');
如果我们在$data->child 下有2 项,则调用pluck 后,第一项包含所有3 个关系(child、child.one、child.two),第二项仅包含child。我猜如果我们调用unsetRelation 不应该在pluck 方法之后返回它?
如果我们在transform 之后调用dd($data),则关系不存在。
更新
$items = Model::with([
'child',
'child.one',
'child.two'
])->get();
$items->transform(function($item, $key) use ($request){
if($this->filter($item->child, $request)){ //check if need to exclude
$item->child->param_1 = $item->id; //as example there is more logic
}else{
$item->unsetRelation('child');
}
return $item;
});
return $items->pluck('child');
【问题讨论】:
标签: php laravel eloquent lumen laravel-collection