我有以下查询。
$projects = Project::orderBy('created_at', 'desc');
$data['sorted'] = $projects->groupBy(function ($project) {
return Carbon::parse($project->created_at)->format('Y-m-d');
})->simplePaginate(5);
当我尝试使用simplePaginate()
方法进行分页时,出现此错误。
stripos()期望参数1为字符串,给定对象
在这种情况下如何对分组数据进行分页?
答案 0 :(得分:1)
created_at
属性已经强制转换为Carbon
对象(在laravel模型中默认)。这就是为什么您会收到该错误。试试这个:
$projects = Project::orderBy('created_at', 'desc')->get();
$data['sorted'] = $projects->groupBy(function ($project) {
return $project->created_at->format('Y-m-d');
})->simplePaginate(5);
此答案仅用于您遇到的错误。现在,如果您需要QueryBuilder的帮助,能否提供您期望得到的结果的示例以及数据库结构的示例?
答案 1 :(得分:0)
应该在查询而不是集合上调用分页方法。
您可以尝试:
$projects = Project::orderBy('created_at', 'desc');
$data['sorted'] = $projects->groupBy('created_at');
答案 2 :(得分:0)
问题已解决。我是通过以下示例创建自定义分页器的: https://stackoverflow.com/a/30014621/6405083
if
答案 3 :(得分:0)
simplePaginate方法存在于以下路径中:
Illuminate\Database\Eloquent\Builder.php::simplePaginate()