jeudi 29 mars 2018

Laravel - select with relationship with one query

I have a Person model. Each person may have zero or more cars:

class Person extends Model
{
    public function cars()
    {
        return $this->hasMany('App\Car');
    }
}

I wish to select and display all persons who have a ford with one running query. So i tried this:

$persons = Person::whereHas('cars', function ($query) {
    $query->where('mark', 'ford');
})->get();

foreach ($persons as $person) {
    foreach($person->cars()->get() as $car) {
        print $person->name . " has a " . $car->mark . $car->model
    } 
}

The $persons is gotten with one query, but inside the foreach loop $person->cars()->get() creates a new query for each person. How can i avoid this and get the needed car data with the first query?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire