如何查看相关table是否没有记录

How to check if related table doesn't have record

匹配table与分数table有关系。

我需要得到所有没有得分记录的比赛table。

尝试了 smth,但没有成功:

$upcomingMatch = Match::join('scores', 'matches.id', '=', 'scores.match_id')
           ->where('away_team_id', '=', '1')
           ->orWhere('home_team_id', '=', '1')
           ->where('scores.match_id', null)
           ->latest('matches.match_date')
           ->first();

尝试:

$upcomingMatch = Match::join('scores', 'matches.id', '=', 'scores.match_id')
           ->where('away_team_id', '=', '1')
           ->orWhere('home_team_id', '=', '1')
           ->whereNull('scores.match_id')
           ->latest('matches.match_date')
           ->first();

如果你使用关系,你可以使用 doesntHave() ,但是如果你在你的问题中写的时候使用查询构建器,你可以使用这些代码,我看到你的 where 条件需要一些调整才能使用嵌套健康)状况。如果你想检索空记录,然后使用 whereNull in scores table 这不是与 matches table 的关系键,在这个例子中我使用 scores.id

获取 matches 其分数为空(使用 leftJoin 和一些附加条件)

$upcomingMatch = Match::leftjoin('scores', 'matches.id', '=', 'scores.match_id')
           ->where(function ($where)
           {
               $where->where('matches.away_team_id', '=', '1')
               ->orWhere('matches.home_team_id', '=', '1');
           })
           ->whereNull('scores.id')
           ->latest('matches.match_date')
           ->first();