Tôi đang triển khai truy vấn để vẽ biểu đồ nhiều đường bằng cách sử dụng biểu đồj. Tôi có một loạt các ngàyTrình tạo truy vấn laravel với điều kiện
["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"]
Mảng này có ngày giữa "2016-11-16" và "2016-10-16".
Tôi đã tạo ra 'Vé' một mô hình, và tôi đã viết một truy vấn để lấy vé đếm được phân nhóm theo 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();
Khi tôi thực hiện truy vấn này tôi đã
[
{
"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"
}
]
Nếu $label[0] != $tickets.created
, vé và tên sẽ là null nhưng phải có ngày
Vui lòng giúp tôi để có được kết quả như
[
[
'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
],
...........
]
Vui lòng giúp tôi tìm giải pháp. Cảm ơn trước.
Bạn cần phải đi trough ngày của bạn và sau đó tìm kiếm cho tất cả các vé khớp với ngày đó. – Roadirsh
Bạn có thể sử dụng 'FORMAT (created_at, 'YYYY-MM-DD')' trong SQL của bạn cũng như sau: 'array_search ($ date, array_column ($ tickets, 'created_at'));' – Roadirsh