посчитать другую таблицу как имя в Laravel Eloquent - PullRequest
0 голосов
/ 01 сентября 2018

Этот SQL-запрос работает

SELECT 
    users.*,
    (SELECT COUNT(*) FROM villaaz.elanlar
        WHERE elanlar.user_id = villaaz.users.id) AS elan_sayi
FROM villaaz.users 
INNER JOIN villaaz.elanlar on users.id = elanlar.user_id
WHERE elanlar.country_id=2 AND deleted_at IS NULL
GROUP BY users.id 
ORDER BY users.id ASC;

Я хочу написать это с помощью Laravel, обратите внимание: это важная часть моего кода Laravel, проблема в том, что здесь, оставшаяся часть работает, жирная линия - это проблема.

$users = User::join('elanlar', 'elanlar.user_id', 'users.id')
    ->select([
       'users.*', 
        DB::select(DB::raw('COUNT(*) as elan_sayi FROM elanlar WHERE elanlar.user_id = users.id '))
    ])->where('elanlar.country_id', 19)->groupBy('users.id);

Ошибка: DB :: select (DB :: raw ('COUNT (*) как elan_sayi ОТ Elanlar) ГДЕ elanlar.user_id = users.id '))

1 Ответ

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

DB::select() выполняет запрос. Вы должны удалить его и добавить SELECT к необработанному SQL:

$users = User::join('elanlar', 'elanlar.user_id', 'users.id')
    ->select([
       'users.*', 
        DB::raw('(SELECT COUNT(*) FROM elanlar WHERE elanlar.user_id = users.id) as elan_sayi')
    ])->where('elanlar.country_id', 19)->groupBy('users.id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...