2 回答
TA贡献1876条经验 获得超5个赞
它不起作用的原因是因为您试图覆盖模型的关系,而您无法通过简单的分配来完成。
您可以使用该setRelation方法实现您想要的:
Model::with('animal')
->get()
->each(function ($item) {
if (true) {
$item->setRelation('animal', 'Yop override');
}
})
->toArray();
如果你想使用这个map方法,它会是一样的,但是你必须在函数的末尾添加一个 return 。
Model::with('animal')
->get()
->map(function ($item) {
if (true) {
$item->setRelation('animal', 'Yop override');
}
return $item;
})
->toArray();
TA贡献1780条经验 获得超4个赞
在您的示例中,您正在使用->each(),您应该使用->map()并返回$item。
其次,你需要一个$key/$value内部function().
第三,use在传递其他数据时使用。
Model::with('animal')->get()->map(function ($model, $key) use (&$item) {
if (condition($item)) {
$item->animal = 'Yop Override';
}
return $item;
})->toArray();
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报