当我尝试对从登录用户传递的结果进行分页时,我得到了错误:
$message = Auth::user()->Notifications()->orderBy('created_at', 'desc')->get()
->groupBy(function($date) {
return Carbon::parse($date->created_at)->format('M d'); // grouping by day
})
->paginate(2);调用未定义的方法Illuminate\Database\Eloquent\Collection::paginate()
问题出在哪里?我如何对对象数组进行分页?
发布于 2015-03-13 16:45:26
试试这个:
$message = Auth::user()->Notifications()->orderBy('created_at', 'desc')
->groupBy(function($date) {
return Carbon::parse($date->created_at)->format('M d'); // grouping by day
})->paginate(2);分页方法需要是链中的最后一个元素,如->get()
// edit:如下所示:http://laravel.com/docs/4.2/pagination
注意:目前,使用groupBy语句的分页操作不能由Laravel有效地执行。如果您需要使用带有分页结果集的groupBy,建议您手动查询数据库并使用Paginator::make。
这也可能是有用的:http://www.jenssegers.be/blog/57/laravel-pagination-with-grouping-and-eager-loading
发布于 2015-03-13 17:39:27
当然,当groupBy返回Illuminate\Support\Collection的一个实例时,您会得到这个错误。你需要做一些像这样的事情
$messages = Auth::user()->Notifications()->orderBy('created_at', 'desc')->paginate(2);
$messages->setItems($messages->groupBy(function($date) {
return $date->created_at->format('M d'); // grouping by day
}));通过这种方式,您可以在分页对象中设置新项,这些项是来自数据库的分组结果。
https://stackoverflow.com/questions/29026848
复制相似问题