【发布时间】:2015-10-15 03:21:15
【问题描述】:
我正在尝试按截止日期对任务进行分组以显示在列表中。
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(): 第一个参数应该是字符串或者整数
我尝试了其他几种方法,但每个日期只返回一个任务。
对我在这里做错的任何帮助都会很棒。
【问题讨论】:
-
为什么不在builder中分组?像这样:
$tasks = $user->tasks()->groupBy('due_at')->orderBy('due_at','ASC')->get(); -
您好,感谢您的评论,按照您的建议,我每个日期只会得到 1 个结果,而不是根据我的问题获得多个结果。
-
只是一个更新,我使用的是 Laravel 5.1.1,我知道 groupBy 方法与以前的版本不同:laravel.com/docs/5.1/upgrade#upgrade-5.1.0
-
如果我执行以下操作: $tasks_group = $user->tasks()->get()->groupBy('due_at');它按预期工作并按任务名称分组,但我需要按截止日期字段分组。
-
看起来它不起作用,因为due_at字段是碳日期对象...如果我将due_at转换为字符串,它可以正常工作。
标签: php mysql laravel laravel-5 eloquent