我有一个查询,该查询从黑名单表中获取每个用户的记录,并从规则表中获取与他们的关系。
看起来像这样:
$result1 = DB::table('blacklist')
->join('rules', 'blacklist.rule_id', '=', 'rules.id')
->select('blacklist.*', 'rules.clicks', 'rules.minutes')
->groupBy('blacklist.address')
->where('blacklist.user_id', JWTAuth::user()->id)
->get();
但是我将字段blacklist.rule_id设置为可以为空。上面的查询不会获取具有blacklist.rule_id == null(仅包含值的记录)的记录。
我为此有第二个查询:
$result2 = DB::table('blacklist')
->select('blacklist.*')
->groupBy('blacklist.address')
->where('blacklist.user_id', JWTAuth::user()->id)
->where('blacklist.rule_id', null)
->get();
但是如何在一个查询中做到这一点?
答案 0 :(得分:2)
它实际上是(0)
而不是leftJoin
:
join
答案 1 :(得分:0)
尝试
$result2 = DB::table('blacklist')
->select('blacklist.*')
->groupBy('blacklist.address')
->where(function ($result2) {
$result2->where('blacklist.user_id', JWTAuth::user()->id)
->orWhereNull('blacklist.user_id');
}
->get();