我是laravel 5中的新手如何将此查询转换为laravel ORM
select `users`.`id`, `users`.`username`, count(`ord`.`id`) As total
FROM `users`
LEFT JOIN `orders` AS `ord` ON `ord`.`empolyee_id` = `users`.`id`
AND DATE(`ord`.`created_at`) = $date
GROUP BY `users`.`id`
我试过这个解决方案,但它无法正常工作
$orders = Order::rightjoin('users',function($join) use($date){
$join->on('users.id', '=','orders.empolyee_id');
$join->on("DATE(created_at)", '=', $date);
})
->select(DB::raw('count(orders.id) as total, users.username'))
->groupBy('users.id')->get()
答案 0 :(得分:0)
鉴于您只选择username
和total
,您可能需要一个数组而不是雄辩的结果,这就是最后lists
的原因。如果您仍想要收集模型,请改用get
。
$users = User::leftJoin('orders as o', function($join) use ($date) {
$join->on('users.id', '=', 'o.empolyee_id')
->where(DB::raw('DATE(o.created_at)'), '=', $date);
})
->selectRaw('count(o.id) as total, users.username')
->groupBy('users.id')
->lists('total', 'username')