Mysql
 sql >> база данни >  >> RDS >> Mysql

Laravel принадлежи към хвърляне на недефинирана грешка

След като помогнах чрез чат, проблемът беше, че имаше съществуваща колона, наречена 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 и т.н.) и се уверете, че действително имате свързан запис във вашата база данни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да филтрирате SQL резултатите във връзка има-много-през

  2. Заявка за подреждане по последните три знака на колона

  3. грешка 1265. Данните са съкратени за колона при опит за зареждане на данни от txt файл

  4. MySQL ON DUPLICATE KEY вмъкнете в таблица за одит или журнал

  5. Свързване към MySQL от други машини