Select all records from one table that do not exist in another table in Laravel 5.1

I want to get all the records from a table that are not in another table in Laravel 5.1.

I know how to do this in core php and it works fine with the following code

SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL 

model

 public function audiences() { return $this->belongsTo('App\BridalRequest', 'request_id'); } 

but when I try to do the same in Laravel using the following code,

 $all_bridal_requests_check = \DB::table('bridal_requests') ->where(function($query) { $query->where('publisher', '=', 'bq-quotes.sb.com') ->orWhere('publisher', '=', 'bq-wd.com-bsf'); }) ->whereNotIn('id', function($query) { $query->table('audiences')->select('request_id'); }) ->orderBy('created_on', 'desc') ->get(); 

then he gives me this error

Call the undefined method Illuminate \ Database \ Query \ Builder :: table ()

+6
source share
1 answer

The above query can be built using the laravel query constructor as follows.

 SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL 

This is equivalent to the query below built using the Laravel query constructor.

 \DB::table('table1 AS t1') ->select('t1.name') ->leftJoin('table2 AS t2','t2.name','=','t1.name') ->whereNull('t2.name')->get(); 
+9
source

All Articles