Po pomoci prostřednictvím chatu byl problém v tom, že existoval sloupec nazvaný group
a metoda vztahu se také nazývala group
, takže hodnota sloupce tabulky měla přednost před metodou vztahu.
Přejmenování metody vztahu nebo group
na něco jako group_id
jsou obě vhodná řešení (doporučoval bych group_id
trasa).
Původní odpověď:
Skupinu získáte prostřednictvím magické vlastnosti, nikoli přímo z metody.
echo User::find(1)->group->name;
Pokud načtete group()
metoda, vrátí objekt vztahu, neprovede žádné dotazy a načte související objekt.
Eloquent také učiní předpoklady o tom, jaké jsou názvy sloupců vašeho cizího klíče. Group
se automaticky přeloží na group_id
sloupec. Pokud máte existující sloupec s názvem group
, pak byste to měli ve svém vztahu výslovně uvést:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Pokud se pro vlastnost group
zobrazí chyba „Pokouším se získat vlastnost non-object“ , pak váš vztah nevrací žádné výsledky ($user->group
bude NULL
). V tomto okamžiku byste se měli ujistit, že váš vztah je správně nastaven (např. pomocí správného náleží, hasOne, hasMany atd.), a ujistěte se, že ve své databázi skutečně máte související záznam.