Выберите Fields, count (), группируйте по красноречивому символу - PullRequest
0 голосов
/ 24 сентября 2018

Как сделать запрос типа:

SELECT agenda_id, data, count(*) FROM marcacoes group by data, agenda_id

Я пытаюсь $agendas = Marcacao::select(['data', 'agenda_id'])->groupBy('data', 'agenda_id')->count();, но результатом будет только поле count.Поля data и agenda_id не отображаются.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Поскольку вы вызываете метод count, он вернет только одно значение, и int точно, который является номером элемента, который соответствует вашему MacMarcacao::select(['data', 'agenda_id'])->groupBy('data', 'agenda_id'), вы не получите все остальные поля, потому что метод count возвращает значение неa Collection, как вы ожидаете.

Сначала вы должны получить свою запись, а после этого вы можете сосчитать метод cound

$agendas = MacMarcacao::select(['data', 'agenda_id'])->groupBy('data', 'agenda_id')->get()

После этого вы можете подсчитать количество записей в вашем $agendas, который является объектом типа Illuminate\Support\Collection

$numberOfAgendas = $agendas->count();
0 голосов
/ 24 сентября 2018

Вы должны использовать необработанный оператор:

Marcacao::select('data', 'agenda_id', DB::raw('count(*)'))
    ->groupBy('data', 'agenda_id')
    ->get();
0 голосов
/ 24 сентября 2018

ваш запрос дает вам только число agendas, потому что вы используете метод count.

, если вы хотите agandas данные, которые вы запрашиваете, должны быть такими:

$agendas = Marcacao::select(['data', 'agenda_id'])->groupBy('data', 'agenda_id')->get();.

тогда, когда вы хотите получить номер вашей $agenda, вам нужно просто посчитать $agandas коллекцию, например:

$numberOfAgandas = $agandas->count();

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