Laravel 5.2 - Left Join Db: :Raw Not Working?

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\Database\Query\Builder::leftJoin()

This is my query:

return $this->model->from('alerts as a')
    ->leftJoin(DB::Raw("locations as l on l.id = JSON_UNQUOTE(JSON_EXTRACT(a.criteria, '$.locationId'))"))
    ->leftJoin(DB::Raw("industries as i on find_in_set(i.id, JSON_UNQUOTE(JSON_EXTRACT(a.criteria, '$.industries')))"))
    ->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');

1 Answer

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.

5

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller

David Miller

Executive Financial & Market Analyst

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.

Share this article
Twitter Facebook Pinterest