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.