我想从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()
答案 0 :(得分:10)
可以使用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();
答案 1 :(得分:0)
后来,是的,我想补充这个问题。通过在users
模型文件中编写以下代码,在表之间创建laravel雄辩的关系,
public function mu_user()
{
return $this->hasMany(\App\MainUser::class, 'id');
}
现在从“用户”表中获取所有记录,该表中没有以下主要用户,
$users = Users::doesnthave('mu_user')->get();
如果要获得具有main_users的用户,则可以编写如下查询,
$users = Author::has('mu_user')->get();
就这么简单。希望对您有帮助!