2015-11-26 51 views
6

我想從Laravel 5.1中其他表中不存在的表中獲取所有記錄。從Laravel 5.1的另一個表中不存在的表中選擇所有記錄

我知道如何在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'); 
} 

但是當我嘗試做Laravel相同通過使用下面的代碼,

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

然後它給了我這個呃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(); 
相關問題