Я знаю, что нечто подобное было здесь некоторое время назад, но это был не тот случай, и я не могу просто понять это на себе.Мне нужно преобразовать сырой SQL-запрос в Eloquent.
Этот запрос содержит SELECT COUNT в предложении WHERE, для простоты у меня есть такой (возможно, не очень большой смысл) запрос:
SELECT u.column1, u.column2, u.column3, s.column1 FROM users u
LEFT JOIN salary s ON u.id = s.user_id
WHERE
(
SELECT count(cars_id) FROM cars WHERE cars.user_id = u.id
) = 0
AND u.city IN ("London","Paris")
Я пытался:
$columns = [
'users.column1',
'users.column2',
'users.column3',
'salary.column1'
];
$q = User::select($columns)
->leftJoin('salary', 'salary.user_id', '=', 'users.id')
->whereRaw(" (SELECT COUNT(cars_id) FROM cars WHERE cars.user_id = u.id) = 0 ")
->whereRaw("u.city IN ('London','Paris')")
->get();
Но он не возвращает те же результаты, что и необработанный SQL (в SQL было 161 строка и Eloquent 154 строки).
Может быть, вы знаете, как правильно преобразовать этот тип запроса в Eloquent?
Спасибо