Php 拉威尔5号groupBy系列

Php 拉威尔5号groupBy系列,php,mysql,laravel,laravel-5,eloquent,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 vi

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

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\u key\u exists()
:第一个参数应该是字符串或整数

我尝试过其他几种方法,但每次只返回一个任务


任何关于我在这里做错了什么的帮助都会很好。

您需要立即加载
任务
关系,然后执行
分组操作

请尝试以下代码:

$user=Auth::user();
$user->load(['tasks'=>函数($q){
$q->orderBy('due_at','ASC');
}]);
$tasks\u group=$user->tasks->groupBy('due\u at');
返回视图('tasks.index',compact('tasks_group');

您需要立即加载
任务
关系,然后执行
分组操作

请尝试以下代码:

$user=Auth::user();
$user->load(['tasks'=>函数($q){
$q->orderBy('due_at','ASC');
}]);
$tasks\u group=$user->tasks->groupBy('due\u at');
返回视图('tasks.index',compact('tasks_group');

为什么不在生成器中按分组?如下所示:
$tasks=$user->tasks()->groupBy('due_at')->orderBy('due_at','ASC')->get()您好,谢谢您的评论,您建议我每个日期只得到一个结果,而不是根据我的问题得到多个结果。只是一个更新,我使用的是Laravel 5.1.1,我知道groupBy方法与以前的版本不同:如果我执行以下操作:$tasks_group=$user->tasks()->get()->groupBy('due_at');它按预期工作,并按任务名称分组,但我需要按到期日期字段分组。由于到期日期字段是一个碳日期对象,它看起来不工作。。。如果我把due_at转换成一个字符串,效果很好。为什么不在生成器中分组呢?如下所示:
$tasks=$user->tasks()->groupBy('due_at')->orderBy('due_at','ASC')->get()您好,谢谢您的评论,您建议我每个日期只得到一个结果,而不是根据我的问题得到多个结果。只是一个更新,我使用的是Laravel 5.1.1,我知道groupBy方法与以前的版本不同:如果我执行以下操作:$tasks_group=$user->tasks()->get()->groupBy('due_at');它按预期工作,并按任务名称分组,但我需要按到期日期字段分组。由于到期日期字段是一个碳日期对象,它看起来不工作。。。如果我将due_at转换为字符串,它就可以正常工作。