Po pomocy przez czat problem polegał na tym, że istniała kolumna o nazwie group , a metoda relacji była również nazywana group , więc wartość kolumny tabeli miała pierwszeństwo przed metodą relacji.
Zmiana nazwy metody relacji lub group kolumna do czegoś takiego jak group_id oba są odpowiednimi rozwiązaniami (proponuję group_id trasa).
Oryginalna odpowiedź:
Grupę pobierasz za pomocą magicznej właściwości, a nie bezpośrednio z metody.
echo User::find(1)->group->name;
Jeśli pobierzesz group() metoda, zwróci obiekt relacji, nie wykona żadnych zapytań i pobierze powiązany obiekt.
Ponadto Eloquent dokona założeń dotyczących nazw kolumn kluczy obcych. Group automatycznie przetłumaczy na group_id kolumna. Jeśli masz istniejącą kolumnę o nazwie group , należy to wyraźnie określić w relacji:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Jeśli pojawi się błąd „Próbuję uzyskać właściwość nieobiektową” dla właściwości group , Twoja relacja nie zwraca żadnych wyników ($user->group będzie NULL ). W tym momencie powinieneś upewnić się, że twoja relacja jest prawidłowo skonfigurowana (np. używając poprawnej „należyTo”, „hasJeden”, „hasWiele” itp.) i upewnić się, że faktycznie masz powiązany wpis w swojej bazie danych.