Laravel verschachtelte Beziehungen

Bin ich mit viel ärger bekommen, der einen sehr verschachtelten Beziehung zu arbeiten, richtig in laravel.

Den wollte, das Verhalten ist wie folgt,

Ich wählen Sie eine Ereignis-ID, und ich möchte, um zu sehen, welche Personen abonniert haben.
Nun das problem ist, gibt es einige Tabellen, die zwischen dem Ereignis und der person..

Dies ist die Abfrage, die funktioniert!

select
    persons.id, persons.firstname, persons.lastname, event_scores.score
from
    events
join
    cities on cities.id = events.city_id
join
    companies on cities.id = companies.city_id
join
    persons on companies.id = persons.company_id
join
    event_scores on event_scores.person_id = persons.id
where 
    event_scores.event_id = 1
group by 
    persons.id

Dies sind meine Beziehungen

Event-Modell

class Event extends Eloquent
{
    protected $table = 'events';

    public function city()
    {
        return $this->belongsTo('City');
    }
}

Stadt-Modell

class City extends Eloquent
{
    protected $table = 'cities';

    public function companies()
    {
        return $this->hasMany('Company');
    }

    public function event()
    {
        return $this->hasMany('Event');
    }
}

Unternehmen Modell

class Company extends Eloquent {

    protected $table = 'companies';

    public function persons()
    {
        return $this->hasMany('Person');
    }

    public function city()
    {
        return $this->belongsTo('City');
    }
}

Person-Modell

class Person extends Eloquent
{
    protected $table = 'persons';

    public function company()
    {
        return $this->belongsTo('Company');
    }

    public function eventscore()
    {
        return $this->belongsToMany('Event', 'event_scores', 'person_id', 'event_id')
            ->withPivot('score')
            ->withTimestamps();
    }
}

Was ich versucht habe

return Event::with('city')->with('company')->get();

und

return Event::with('city')
    ->whereHas('companies', function($query) use ($company_id){
        $query->where('company_id', $company_id);
    })->get();

Und viele andere Möglichkeiten, ich bin wirklich stecken. Ist es so schwierig in laravel zu erreichen, diese Art von verschachtelten Beziehung verknüpfen?

Dank!

InformationsquelleAutor der Frage Notflip | 2014-09-02

Schreibe einen Kommentar