Красноречивый, когда условие, основанное на отношении "принадлежит"

Скажем, у меня есть следующая модель:

class Movie extends Eloquent
{
    public function director()
    {
        return $this->belongsTo('Director');
    }
}

Теперь я хотел бы получить фильмы, используя условие where, основанное на столбце из таблицы директоров.

Есть ли способ достичь этого? Не удалось найти документацию на условиях, основанных на отношении, принадлежащем отношению.

Ответ 1

Вы можете попробовать это (отметьте Запрос отношений на веб-сайте Laravel):

$movies = Movie::whereHas('director', function($q) {
    $q->where('name', 'great');
})->get();

Также, если вы отмените запрос следующим образом:

$directorsWithMovies = Director::with('movies')->where('name', 'great')->get();
// Access the movies collection
$movies = $directorsWithMovies->movies;

Для этого вам нужно объявить отношение hasmany в вашей модели Director:

public function movies()
{
    return $this->hasMany('Movie');
}