我想从一个表中获取所有记录,这些记录在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();


然后给我这个错误


  调用未定义的方法Illuminate \ Database \ Query \ Builder :: table()

最佳答案

可以使用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();

关于php - 从一个表中选择所有不在Laravel 5.1中的表中存在的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58813180/

10-16 15:10