我的数据库是这样的
我有一个Laravel 4.2查询生成器代码
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
我有像这样的输出
因此,我在Laravel中得到空行,并在同一SQL查询的原始查询中获得8行。
任何人都可以帮我解决这个问题吗?
提前感谢您的帮助。
答案 0 :(得分:1)
据我所知,您无法绑定表名和列名
这就是您的查询失败的原因(更准确,没有提供所需的结果)。
"bindings":["`car`.`car_id`","no"]
这里你绑定了 car.car_id
它不起作用。以下应该有效。
->whereRaw('`available_car`.`car_id` =`car`.`car_id`')
这应该给出与phpmyadmin相同的结果。
答案 1 :(得分:1)
您可以使用绑定。
或者您可以使用加入。