如何查看相关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();
匹配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();