2015-11-26 21 views
6

Ich möchte alle Datensätze aus einer Tabelle, die nicht in anderen Tabelle in Laravel 5.1 vorhanden sind.Wählen Sie alle Datensätze aus einer Tabelle, die nicht in einer anderen Tabelle in Laravel 5.1

Ich weiß, wie dies in Kern PHP zu tun, und es funktioniert gut mit dem folgenden Code

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

das Modell

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

aber wenn ich versuche, das gleiche in Laravel zu tun mit dem folgenden 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(); 

dann gibt mir das er äh ror

Call to undefined Methode Illuminate \ Database \ Abfrage \ Builder :: Tabelle()

+1

Haben Sie die Beziehung in der Modellklasse definiert? – Saani

+0

@Saani ja ich habe .. –

+0

können Sie mit dem Modell Klassencode bereitstellen? – Saani

Antwort

9

Die oben genannte Abfrage kann mit Laravel Query Builder auf folgende Weise gebaut werden.

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

Dies entspricht der Abfrage unter Verwendung von Laravel Query Builder.

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