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.