【发布时间】:2020-08-11 12:42:55
【问题描述】:
错误异常:
stripos() expects parameter 1 to be string, object given
对于with() 方法中的groupBy() 调用
$user = User::with([
'pricelists' => function($query) {
$query->groupBy(function($var) {
return Carbon::parse($var->pivot->created_at)->format('m');
});
}
])->where('id', $id)->get();
我已经看到一些帖子谈论如何管理这个问题,并且不可能在 eloquent 中使用groupBy(),但我真的不明白为什么......
要明确:
User 和 Pricelist 模型与默认的 timestamps() 方法建立了多对多关系。我正在尝试按从当前用户下载的月份对下载的价目表进行分组。
经过几次尝试,我刚刚从with() 方法中删除了上面显示的=> function($query... 语句,然后只留下with(['pricelist']) 来获取所有数据集并尝试了这个:
$user->pricelists = $user->pricelists->groupBy(function($var) {
return Carbon::parse($var->pivot->created_at)->format('m');
});
return $user->pricelists;
它工作正常,每个月返回一个包含多个数组的数组...但是像这样返回它:
return $user;
只返回 1 个包含所有条目的数组...我现在并没有真正理解它背后的意义...
【问题讨论】:
标签: php laravel eloquent eager-loading