Laravel 5.2 - Left Join DB::Raw not working?

前端 未结 1 1285
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-20 01:40

I have the following query where I\'m trying to use DB::Raw() for the left join but I\'m getting error:

Missing argument 2 for Illuminate

1条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-20 02:14

    The leftJoin function is declared like this:

     public function leftJoin($table, $first, $operator = null, $second = null)
    

    You want to pass your raw functions in as the second column:

    return $this->model->from('alerts as a')
                       ->leftJoin('locations AS l', 'l.id', '=', DB::Raw("JSON_UNQUOTE(JSON_EXTRACT(a.criteria, '$.locationId'))"))
                       ->leftJoin('industries as i', function($join){
                            $join->on(DB::raw("find_in_set(i.id, JSON_UNQUOTE(JSON_EXTRACT(a.criteria,  '$.industries')))",DB::raw(''),DB::raw(''))); 
                       })
    
                       ->where('user_id', '=', $userId)
                       ->selectRaw("a.id
                                 , a.name
                                 , a.criteria
                                 , GROUP_CONCAT(DISTINCT(i.name) SEPARATOR ', ') as 'Industries'")
                       ->groupBy('a.id')
                       ->orderBy('a.created_at', 'desc');
    

    The find_in_set suggestion came from here.

    I'm not sure what '$.locationId' is, but if it's a variable, you can pass that along as a parameter within an array as the second parameter on the DB::raw() function.

    0 讨论(0)
提交回复
热议问题