2017-12-18 3 views
0

Ich versuche, Beziehung zwischen zwei Tabellen, Benutzer und Nachrichten in Laravel-Modellen zu erstellen, wie der Benutzer eine Nachricht an einen anderen Benutzer senden kann, so dass ich zwei Fremdschlüssel (fromUser_id und toUser_id) wie in der Abbildung unten gezeigt.Laravel-Modell erstellen Beziehungen zweimal zwischen zwei Tabellen

enter image description here

Für die erste Beziehung es einfach ist, dass ich eine Funktion mit dem Namen Nachrichten schaffen

public function messages(){ 
    return $this->hasMany('App\Models\Message', 'fromUser_id'); 
} 

aber ich weiß nicht, wie die zweite Beziehung zu nennen, soweit ich es weiß, sollten auch Nachrichten sein, entsprechend der Standardbenennung von Laravel, die offensichtlich einen Fehler ausgibt, da wir die erste Funktion mit dem gleichen Namen haben.

Bitte lassen Sie mich wissen, wie ich es nennen soll und wie sich dies auf die Modelle auswirkt.

+1

Verwenden Sie einfach schönen beschreibenden Namen. Kein Problem mit einer Standardbenennung damit. – Amarnasan

+0

Was Laravel verwirren wird, ist '' fromUser_id'' oder ''toUser_id'' ist nicht der Name der Funktion, bitte nennen Sie es :)! – Maraboc

+0

@Maraboc Glaubst du, 'fromUser_id' oder 'toUser_id' wird jedes Problem erzeugen, wenn ich anfange, Controller zu erstellen –

Antwort

2

Nun, Sie sollten nicht einfach messages als Beziehung verwenden, sondern receivedMessages und sentMessages wie folgt verwenden:

public function sentMessages() 
{ 
    return $this->hasMany('App\Models\Message', 'fromUser_id'); 
} 

public function receivedMessages() 
{ 
    return $this->hasMany('App\Models\Message', 'toUser_id'); 
} 
+0

Meine Frage ist: wird die Änderung des Namens von Nachrichten zu einem anderen Namen das Laravel-Modell verwechseln oder es ist in Ordnung, es so zu benennen, wie ich möchte –

+1

Nein, können Sie Namen für Beziehungen als Sie verwenden Ich möchte, dass es hier kein Problem geben wird. –

Verwandte Themen