2017-05-11 17 views
1

Ich habe zwei Beziehungsmodell in meinem Projekt. CarPool & Fahrt & Benutzer.Beziehung funktioniert nicht in Laravel eloquent

In meinem CarPool Modell

public $with=['user','ride']; 

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

public function ride(){ 
    return $this->hasMany('App\Ride'); 
} 

In meiner Fahrt Modell

public $with=['user','carpool']; 

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

public function carpool(){ 
    return $this->belongsTo('App\CarPool'); 
} 

In meinem erwarteten Szenario, wenn der Benutzer Seite "My Ride" eingeben, wird alles Fahrt durch Benutzer nahm anzuzeigen. (ZB Benutzer nahmen 3 Fahrten). So die Liste mit 3 Spalten. Jede Fahrsäule hat Fahrgemeinschaftsinformation und Fahrerinformation.

In meinem Controller benutze ich dies, um die Fahrt zum Benutzer zu bekommen.

$user_id=Auth::user()->id; 

    $rides= Ride::where('user_id',$user_id)->get(); 

Aber nachdem ich das Ergebnis überprüft habe. Scheint so, als ob die Fahrgemeinschaft nicht verbunden war, weil dort null war. Ist meine Beziehung nicht korrekt?

enter image description here

Meine Tabelle in der Datenbank car_pools Tabelle enter image description here

Fahrten Tabelle enter image description here

+1

Können Sie Ihre Tabellenstruktur für beide Tabellen veröffentlichen? – Ian

+0

Sind Sie sicher, dass 'Ride' mit einem' Mitfahrgelegenheit' in Verbindung steht? Bitte versuchen Sie 'dd ($ rides [0] -> Fahrgemeinschaft);' –

+0

@lan Ich habe meine Tabelle aktualisiert, bitte überprüfen Sie – Eann

Antwort

0

Es sieht wirklich wie Sie nicht car_pool_id Felder in der rides Tabelle, die CarPool ID bezogen hat drin.

Wenn Sie diese Felder haben, aber der Name ist anders, fügen Sie den Fremdschlüssel Namen der Beziehung:

public function carpool() 
{ 
    return $this->belongsTo('App\CarPool', 'custom_column_name'); 
} 
+0

Ja, ich in meiner Fahrten Tabelle car_pool_id haben. Ich habe meine Datenbanktabelle hochgeladen, bitte überprüfen. – Eann

1

Probleme gelöst, wenn auch nicht Adler Laden ist aber immer noch in einer anderen Art und Weise arbeiten. Ich habe mein Fahrmodell geändert, indem ich die Fahrgemeinschaft entfernt habe. So, jetzt ist

public $with=['user']; 

Dann rufe ich die Daten von {{ $ride->carpool->title }} Nicht gleiche mit meiner Erwartung aber zumindest arbeiten.

0

Versuchen Sie nach dem Geben von Fremdschlüssel und Primärschlüssel beide in der Relation Mapping-Funktion. Da manchmal, wenn Sie nur Fremdschlüssel geben, dann versucht das Modell, eine Verbindung mit dem anderen Modell mit seinem Primärschlüssel herzustellen. Wenn Sie nicht den Primärschlüssel für die Beziehung verwenden, geben Sie den anderen Schlüssel in der Beziehungsfunktion an.

Verwandte Themen