Laravel 4.2 Query Builder не работает идеально

Моя БД такая
База данных

У меня есть код Laravel 4.2 Query Builder

           DB::table(DB::raw('`car` , `available_car`, `users`'))
->select('car.car_maker', 'car.car_model', 'available_car.car_price', 'car.car_production_year', 'available_car.car_id', 'available_car.id', 'available_car.current_position')
//Where
//Basic Parts
->where('available_car.car_id', '=' , '`car`.`car_id`')
->where('available_car.is_sold', '=', 'no')
->whereRaw('`available_car`.`created_at` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()')
//Ordering
->orderByRaw('WEEK(`available_car`.`created_at`) DESC')
->orderBy('available_car.car_price', 'desc')
->orderBy('users.last_paid_date', 'desc')
->orderBy('available_car.created_at', 'desc')
->distinct();
echo $query->count();
$info = $query->get();

Здесь, если я хочу знать, какой запрос выполняется, я использовал этот код

$info = $query->get();
$queries = DB::getQueryLog();

Теперь я получаю этот вывод

0{"query":"select distinct `car`.`car_maker`, `car`.`car_model`, `available_car`.`car_price`, `car`.`car_production_year`, `available_car`.`car_id`, `available_car`.`id`, `available_car`.`current_position` from `car` , `available_car`, `users` where `available_car`.`car_id` = ? and `available_car`.`is_sold` = ? and `available_car`.`created_at` BETWEEN NOW() - INTERVAL 30 DAY AND NOW() order by WEEK(`available_car`.`created_at`) DESC, `available_car`.`car_price` desc, `users`.`last_paid_date` desc, `available_car`.`created_at` desc","bindings":["`car`.`car_id`","no"],"time":1.03}

Если я запускаю этот выходной код в PHP MyAdmin Query

SELECT DISTINCT  `car`.`car_maker` ,  `car`.`car_model` ,  `available_car`.`car_price` ,  `car`.`car_production_year` ,  `available_car`.`car_id` ,  `available_car`.`id` ,  `available_car`.`current_position`
FROM  `car` ,  `available_car` ,  `users`
WHERE  `available_car`.`car_id` =  `car`.`car_id`
AND  `available_car`.`is_sold` =  'no'
AND  `available_car`.`created_at`
BETWEEN NOW( ) - INTERVAL 30
DAY AND NOW( )
ORDER BY WEEK(  `available_car`.`created_at` ) DESC ,  `available_car`.`car_price` DESC ,  `users`.`last_paid_date` DESC , `available_car`.`created_at` DESC

У меня есть вывод, как это

Вывод SQL

Итак, я получаю пустую строку в Laravel и получаю 8 строк в необработанном запросе для того же SQL-запроса.

Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо за помощь.

1

Решение

Вы можете использовать привязку.

Или вы можете использовать присоединение.

1

Другие решения

Насколько я знаю, ты невозможно связать имена таблиц и столбцов

вот почему ваш запрос терпит неудачу (точнее, не давая желаемого результата).

"bindings":["`car`.`car_id`","no"]

здесь вы обязательны car.car_id

это не сработает. Следующее должно работать.

->whereRaw('`available_car`.`car_id` =`car`.`car_id`')

это должно дать тот же результат, что и phpmyadmin.

1

По вопросам рекламы [email protected]