选择有联接但没有外键的项目

时间:2018-09-06 13:57:09

标签: php laravel

我有一个查询,该查询从黑名单表中获取每个用户的记录,并从规则表中获取与他们的关系。

看起来像这样:

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

但是如何在一个查询中做到这一点?

2 个答案:

答案 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();