2017-08-04 6 views
0

Ich habe eine polymorphe Beziehung mit Laravel. Meine polymorphe Beziehung ist Nachricht-> messbar und wird entweder zu Gruppe oder Chat.Laravel polymorphe Beziehung 0 Ergebnisse

Gehen Sie von Nachricht-> messbar wird mir das richtige Ergebnis (z. B. die Gruppe oder den Chat die Nachricht zugeordnet ist).

Ausgehend von Beispiel Group :: first() -> with ('messages') -> get() gibt ein leeres Nachrichtenarray zurück.

Meine db Tabellen für die Nachrichten sind messageable_id messageable_type

Mein Modell Methoden sind wie folgt

class Message extends Model 
{ 
public function messageable(){ 
    return $this->morphTo(); 
} 

^Werke wie beabsichtigt

class Group extends Model 
{ 
function messages(){ 
    return $this->morphMany('Message','messageable'); 
} 

class Chat extends Model 
{ 
public function messages(){ 
    return $this->morphMany('Message','messageable'); 

Diese leer zurück.

Beispieldaten verwendet: 1

Irgendwelche Ideen?

Antwort

1

Ihre Beziehungen sind falsch. Sie müssen auf den gesamten Klassennamespace und nicht nur auf den Klassennamen selbst verweisen. Z.B.

class Group extends Model 
{ 
    public function messages() 
    { 
     return $this->morphMany(\App\Models\Message::class', 'messageable'); 
    } 
} 
+0

Versucht mit/ohne vollen Namespacing und keinen Unterschied. – Prodigle

+0

Wie sieht Ihr Datenbankschema speziell für die morphbaren Felder aus? – fubar

0

Ich habe vergessen, Namespaces in meine Datenbank messageable_type aufzunehmen.

Von Gruppe zu App \ Group geändert.

+0

So wurde die Beziehung falsch definiert;) – fubar

Verwandte Themen