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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur wollen, wählen Sie bestimmte Felder aus der
persons
Tabelle, verwenden Sie diese:InformationsquelleAutor der Antwort Joseph Silber
Für Stadt und Unternehmen, die bestimmte Felder , die Sie benötigen, zu verteilen, die mit eloquent.
Eg:
InformationsquelleAutor der Antwort Rashmi Nalwaya