След като помогнах чрез чат, проблемът беше, че имаше съществуваща колона, наречена group
, а методът на връзката също се нарича group
, така че стойността на колоната в таблицата имаше предимство пред метода на връзката.
Преименуване на метода на връзката или group
колона към нещо като group_id
и двете са подходящи решения (бих предложил group_id
маршрут).
Оригинален отговор:
Извличате групата чрез магическо свойство, а не директно от метода.
echo User::find(1)->group->name;
Ако извлечете group()
метод, той ще върне обекта на връзката, няма да изпълнява никакви заявки и ще извлече свързания обект.
Освен това Eloquent ще направи предположения какви са имената на колоните на външния ключ. Group
автоматично ще се преведе в group_id
колона. Ако имате съществуваща колона, наречена group
, тогава трябва да посочите това изрично във вашата връзка:
public function group ()
{
return $this->belongsTo('Group', 'group');
}
Ако получите грешка „Опитвам се да получа свойство на не-обект“ за свойството group
, тогава вашата връзка не връща никакви резултати ($user->group
ще бъде NULL
). В този момент трябва да се уверите, че връзката ви е настроена правилно (напр. като използвате правилното belongsTo, hasOne, hasMany и т.н.) и се уверете, че действително имате свързан запис във вашата база данни.