Я пытаюсь добавить Doctrine поверх существующей базы данных. Я позволяю Doctrine генерировать аннотированные объекты и корректироваться оттуда. Когда я пытаюсь загрузить объект ниже, я получаю ошибку PHP Fatal error: Uncaught exception 'ReflectionException' with message 'Property Users\\User::$resellerID does not exist'
class User { /* ... */ /** * @var \Doctrine\Common\Collections\Collection * * @ORM\ManyToOne(targetEntity="\Resellers\Reseller") * @ORM\JoinTable(name="reseller", * joinColumns={ * @ORM\JoinColumn(name="resellerID", referencedColumnName="resellerID") * }, * inverseJoinColumns={ * @ORM\JoinColumn(name="resellerID", referencedColumnName="resellerID") * } * ) */ private $reseller; /* ... */ }
Таблицы user
и reseller
имеют столбцы resellerID
. Я понимаю, что для объединения столбцов ID вы не добавляете столбцы ID в качестве свойств в классе сущности. Итак, что вызывает ReflectionException?
Так как я переименовал автогенерированное свойство из resellerID
в reseller
(после попытки его использования), оказалось, что мне нужно очистить кэш доктрины.
php vendor/bin/doctrine.php orm:clear-cache:result php vendor/bin/doctrine.php orm:clear-cache:query php vendor/bin/doctrine.php orm:clear-cache:metadata
Или, если вы используете Symfony с Доктриной:
php bin/console doctrine:cache:clear-result php bin/console doctrine:cache:clear-query php bin/console doctrine:cache:clear-metadata
Для меня очистка кеша PHP APC была решением
<?php apc_clear_cache();