Количество запросов Laravel - PullRequest
       3

Количество запросов Laravel

0 голосов
/ 06 декабря 2018

У меня есть две таблицы: rrpps и клиенты с отношением один ко многим.У rrpps много клиентов.Мне нужен список всех rrpps и количество клиентов, которые у него есть.У меня есть этот запрос:

  $data = DB::table('rrpps')
            ->select('rrpps.*',DB::raw('COUNT(clientes.codRRPP) as total_clientes'))
            ->join('clientes', 'clientes.codRRPP', '=', 'rrpps.codRRPP')
            ->groupBy('rrpps.codRRPP')
            ->get();

, но он показывает мне следующую ошибку

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1055 'evento.rrpps.nombre 'отсутствует в GROUP BY (SQL: выберите rrpps. *, COUNT (clientes.codRRPP) как total_clientes из rrpps внутреннего соединения clientes в clientes. codRRPP = rrpps. codRRPP группировка по rrpps. codRRPP)

номенклатура и атрибуты ррппс.это работает только с указанием, но мне нужны все данные rrpps.Как я могу это сделать?

то есть работает правильно, но мне нужны все поля rrpps.

  $data = DB::table('rrpps')
                ->select('rrpps.codRRPP',DB::raw('COUNT(clientes.codRRPP) as total_clientes'))
                ->join('clientes', 'clientes.codRRPP', '=', 'rrpps.codRRPP')
                ->groupBy('rrpps.codRRPP')
                ->get();

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Если у вас уже есть отношения, вам не нужно использовать соединение.Также переместите groupBy после get ().Просто сделайте это -

$data = DB::table('rrpps')->withCount('clientes')
                 ->get()
                 ->groupBy('rrpps.codRRPP');

И вы можете получить к нему доступ с помощью

foreach ($data as $dt) {
   echo $dt->clientes_count;
}
0 голосов
/ 06 декабря 2018

Вам необходимо использовать метод selectRaw следующим образом:

$data = DB::table('rrpps')->selectRaw('rrpps.*, COUNT(clientes.codRRPP) as total_clientes') 
    ->join('clientes', 'clientes.codRRPP', '=', 'rrpps.codRRPP')
    ->groupBy('rrpps.codRRPP')
    ->get();

Это позволит вам использовать необработанный SQL в выборе, а не DB::raw().

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