web-dev-qa-db-fra.com

Éloquent lorsque la condition basée sur une relation "appartient à"

Disons que j'ai le modèle suivant:

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

Maintenant, je voudrais récupérer des films en utilisant une condition where basée sur une colonne de la table des réalisateurs.

Existe-t-il un moyen d'y parvenir? Impossible de trouver de la documentation sur les conditions basées sur une relation d'appartenance à.

22
Lior

Vous pouvez essayer ceci (Check Querying Relations on Laravel website):

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

Aussi, si vous inversez la requête comme:

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

Pour cela, vous devez déclarer une relation hasmany dans votre modèle Director:

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