如何将我的sql查询中的join转换为laravel ORM

时间:2015-05-20 20:31:40

标签: php mysql laravel orm laravel-5

我是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()

1 个答案:

答案 0 :(得分:0)

鉴于您只选择usernametotal,您可能需要一个数组而不是雄辩的结果,这就是最后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')