Laravel, в подсчёте лезвий с groupBy - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть это в моем клинке

{{$apartment -> messages() -> count()}}

Это возвращает мне общее количество сообщений, касающихся квартиры. Тем не менее, я хотел бы, чтобы число дифференцировалось в соответствии с «create_at», например, с groupBy, а затем возвращать итоговое значение для каждой даты. Возможно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Вы можете сделать это с помощью Laravel построителя запросов либо так:

$apartment->messages()
    ->selectRaw('count(*) as count, date(created_at) as created_date')
    ->groupBy('created_date')
    ->get()

Или:

use Illuminate\Support\Facades\DB;

$apartment->messages()
    ->selectRaw('count(*) as count')
    ->groupBy(DB::raw('date(created_at)'))
    ->get()
0 голосов
/ 20 февраля 2020

не проверено, но должно работать:

$aGroupedMessages = $apartment->messages()->groupBy(function($date) {
    return Carbon::parse($date->created_at)->format('Y-m-d');
})

foreach ($aGroupedMessages as $sDate => $aMessages) {
    echo $sDate . " => " . count($aMessages); 
}

$ apartment-> messages () являются коллекциями. посмотрите на https://laravel.com/docs/5.6/collections#method -группы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...