【问题标题】:how to convert join in my sql query to laravel ORM如何将我的 sql 查询中的连接转换为 laravel ORM
【发布时间】:2015-08-02 07:11:20
【问题描述】:

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

【问题讨论】:

    标签: php mysql laravel orm laravel-5


    【解决方案1】:

    假设您只选择了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')
    

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2021-12-29
      • 2021-08-10
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      相关资源
      最近更新 更多