2015-11-26 6 views
6

Laravel 5.1の他のテーブルに存在しないテーブルからすべてのレコードを取得します。Laravel 5.1の別のテーブルに存在しないすべてのレコードを1つのテーブルから選択します。

私はLaravelで同じことをしようとしたとき、私はコアPHPでこれを行う方法を知って、それが次のコード

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

で正常に動作モデルを

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

が、次のコードを使用して、

$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(); 

未定義のメソッドを照らし\ DatabaseへのROR

コール\クエリー\ビルダー::テーブル()

+1

モデルクラスでリレーションシップを定義しましたか? – Saani

+0

@Saaniはい私は行った.. –

+0

あなたはモデルのクラスコードを提供できますか? – Saani

答えて

9

は、上記のクエリは次のようにlaravelクエリビルダを使用して構築することができます。

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

これは、Laravelのクエリビルダを使用して構築された以下のクエリと同等です。

\DB::table('table1 AS t1') 
->select('t1.name') 
->leftJoin('table2 AS t2','t2.name','=','t1.name') 
->whereNull('t2.name')->get(); 
関連する問題