Laravel 5 group收藏

时间:2015-10-15 03:21:16

标签: php mysql laravel laravel-5 eloquent

我正在尝试按截止日期对任务进行分组,以显示在列表中。

2015年1月1日星期三   任务1   任务2

这是功能:

public function index()
{
    $user = Auth::user();
    $tasks = $user->tasks()->orderBy('due_at','ASC')->get();    
    $tasks_group = $tasks->groupBy('due_at');   
    return view('tasks.index', compact('tasks_group'));
}

但是我收到了错误:

array_key_exists():第一个参数应该是字符串或整数

我尝试了其他一些方法,但每个日期只返回一项任务。

对我在这里做错的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

您需要急切加载tasks关系,然后执行groupBy

请尝试以下代码:

$user = Auth::user();

$user->load(['tasks' => function ($q) {
    $q->orderBy('due_at', 'ASC');
}]);

$tasks_group = $user->tasks->groupBy('due_at');

return view('tasks.index', compact('tasks_group'));