Laravel как получить все значения с условием where

#php #arrays #laravel #model-view-controller #eloquent

#php #массивы #laravel #модель-представление-контроллер #красноречивый

Вопрос:

теперь этот код принимает все совпадения. Мне нужно брать только там, где home_team_score и away_team_score не равны нулю:

 $matches = Match::with('score', 'homeTeam', 'awayTeam')->
        where('league_id', '=', $league->id)->get();

    foreach ($matches as $match) {

        $homeTeamScore = $match->score->home_team_score;
        $awayTeamScore = $match->score->away_team_score;
 

Помогите здесь с условием where.

Комментарии:

1. рассматривали ли вы возможность использования whereHas для запроса наличия условия отношения? laravel.com/docs/8.x /…

Ответ №1:

Необходимо whereHas ограничить запрос, чтобы включать только совпадения, в которых home_team_score и away_team_score не равны нулю.

 $matches = Match::with('score', 'homeTeam', 'awayTeam')
    ->whereHas('score', function($query){
        $query->whereNotNull('home_team_score')
            ->whereNotNull('away_team_score');
    })
    ->where('league_id', '=', $league->id)
    ->get();