gpt4 book ai didi

php - 带条件的 laravel 查询生成器

转载 作者:可可西里 更新时间:2023-11-01 06:34:09 25 4
gpt4 key购买 nike

我正在执行查询以使用 chartjs 绘制多折线图。我有一组日期

["2016-10-16","2016-10-17","2016-10-18","2016-10-19","2016-10-20","2016-10-21","2016-10-22","2016-10-23","2016-10-24","2016-10-25","2016-10-26","2016-10-27","2016-10-28","2016-10-29","2016-10-30","2016-10-31","2016-11-01","2016-11-02","2016-11-03","2016-11-04","2016-11-05","2016-11-06","2016-11-07","2016-11-08","2016-11-09","2016-11-10","2016-11-11","2016-11-12","2016-11-13","2016-11-14","2016-11-15","2016-11-16"]

此数组的日期介于“2016-11-16”和“2016-10-16”之间。

我创建了一个模型 Tickets,我编写了一个查询来获取按 tickets.status 分组的票数。

$join = $this->tickets();
$tickets = $join
->when($category, function($query) use ($category) {
$ranges = $this->dateRange($category);
return $query->whereBetween('tickets.created_at', $ranges);
})
->select(DB::raw('COUNT(tickets.id) as tickets'), 'ticket_status.name as name', 'tickets.created_at')
->groupBy('ticket_status.name', 'tickets.created_at')
->get();

执行我得到的这个查询

[
{
"tickets":"1",
"name":"Closed",
"created_at":"2016-11-08 14:07:32"
},
{
"tickets":"1",
"name":"Open",
"created_at":"2016-11-08 14:07:32"
},
{
"tickets":"1",
"name":"Open",
"created_at":"2016-11-11 12:24:39"
},
{
"tickets":"1",
"name":"Open",
"created_at":"2016-11-11 12:26:38"
},
{
"tickets":"1",
"name":"Open",
"created_at":"2016-11-11 12:27:04"
},
{
"tickets":"1",
"name":"Open",
"created_at":"2016-11-11 12:27:49"
},
{
"tickets":"1",
"name":"Open",
"created_at":"2016-11-11 12:28:47"
},
{
"tickets":"1",
"name":"Resolved",
"created_at":"2016-11-08 14:07:32"
}
]

如果 $label[0] != $tickets.created,票和名字将为空,但应该有日期

请帮我得到类似的输出

[
[
'tickets'=>0,
'name'=>null,//tickets don't have this date
'created_at'=>'2016-10-16'
],
[
'tickets'=>0,
'name'=>null,//tickets don't have this date
'created_at'=>'2016-10-15'
],
[
'tickets'=>1,
'name'=>'closed',//on this date 1 closed ticket
'created_at'=>'2016-10-14'
],
[
'tickets'=>3,
'name'=>'open',//on this date 3 open ticket
'created_at'=>'2016-10-14'
],
[
'tickets'=>2,
'name'=>'resolved',//on this date 2 resolved ticket
'created_at'=>'2016-10-14'// on 2016-10-14 has three different tickets
],
...........
]

请帮我找到解决办法。提前致谢。

最佳答案

请关注Laravel:Collection:GroupBy

所以你可能需要这样的代码

$join = $this->tickets();
$tickets = $join
->when($category, function($query) use ($category) {
$ranges = $this->dateRange($category);
return $query->whereBetween('tickets.created_at', $ranges);
})
->select(DB::raw('COUNT(tickets.id) as tickets'), 'ticket_status.name as name', 'tickets.created_at')
->get()->groupBy(/** YOUR LOGIC HERE **/);

关于php - 带条件的 laravel 查询生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40633483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com