Dopo aver aiutato tramite chat, il problema era che esisteva una colonna chiamata group
, e il metodo di relazione è stato anche chiamato group
, quindi il valore della colonna della tabella aveva la precedenza sul metodo di relazione.
Rinominare il metodo di relazione o il group
colonna a qualcosa come group_id
sono entrambe soluzioni adatte (suggerirei il group_id
percorso).
Risposta originale:
Recuperi il gruppo tramite una proprietà magica, non direttamente dal metodo.
echo User::find(1)->group->name;
Se recuperi il group()
metodo, restituirà l'oggetto della relazione, non eseguirà alcuna query e preleverà l'oggetto relativo.
Inoltre, Eloquent farà ipotesi su quali siano i nomi delle colonne della chiave esterna. Group
si tradurrebbe automaticamente in un group_id
colonna. Se hai una colonna esistente chiamata group
, quindi dovresti specificarlo esplicitamente nella tua relazione:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Se ricevi un messaggio di errore "Tentativo di ottenere la proprietà di un non oggetto" per il group
della proprietà , la tua relazione non restituisce alcun risultato ($user->group
sarà NULL
). A quel punto, dovresti assicurarti che la tua relazione sia impostata correttamente (ad es. utilizzando il corretto requireTo, hasOne, hasMany, ecc.) e assicurarti di avere effettivamente una voce correlata nel tuo database.