После создания объекта с:
php app/console doctrine:generate:entity
и при использовании:
php app/console doctrine:schema:update --force
Я столкнулся:
Нет классов метаданных для обработки.
сущность
namespace ISLab\AdminBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="menu_items") */ class MenuItem { /** * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\Column(name="parent", type="integer") */ private $parent; // ... }
У меня была аналогичная проблема, и мне потребовалось некоторое время, пока я не выясню, как очистить кеш. Очистка кеша доктрины не работала для меня. Используйте приведенную ниже команду, чтобы очистить всю среду (производственный в этом случае)
php app/console cache:clear --env=prod
Таким образом, менеджер объектов не создал метаданные для вашей организации. Вот что я должен проверить в первую очередь:
AdminBundle
зарегистрирован в AppKernel. true
. Или настройте его правильно, если вы используете пользовательский EM. Немного offtopic:
Я вижу, что вы создаете систему меню, и я настоятельно рекомендую вам проверить Дерево расширений Doctrine, которое должно позволить вам запрашивать и редактировать элементы намного эффективнее, чем с вашей структурой.
У меня была такая же проблема, когда я генерирую Entity через интерактивный генератор из командной строки. Когда я впервые создал, я установил формат конфигурации на PHP, и это не сработало. Поэтому я удалил его и попробовал еще раз, но на этот раз я выбрал формат = аннотация . Тогда это сработало! Возможно, это может решить чью-то проблему.
У меня была та же проблема, когда я обновлял базу данных. Поэтому я следую этому решению, и я попытался адаптироваться в моем случае, и он работает. Я думаю, что это проблема автомашинки действительно с auto_mapping setted true, symfony не смог найти сущности. Я надеюсь, что это может помочь.
orm: auto_generate_proxy_classes: "%kernel.debug%" naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true mappings: AppBundle: type: annotation is_bundle: false dir: %kernel.root_dir%/../src/AppBundle/Entity/ prefix: AppBundle\Entity alias: AppBundle
для тех, кто на одном и том же, это несколько шагов:
bin/console c:c --env=dev bin/console c:c --env=prod
Если вы заметили какие-либо ошибки, попробуйте его закрыть, проверив источник проблемы.
Согласно этой типовой структуре каталогов:
Application | └- src | └- Acme | └- Bundle | └- BlogBundle | └- Model | └- Entity
У вас должна быть эта конфигурация внутри вашего файла app/config/config.yml
:
doctrine: ... orm: auto_generate_proxy_classes: '%kernel.debug%' naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true mappings: AcmeBlogBundle: mapping: true type: annotation dir: Model/Entity alias: Blog prefix: Acme\Bundle\BlogBundle\Model\Entity is_bundle: true
Теперь вы можете без проблем обновить схему своей базы данных:
bin/console doctrine:schema:update
несмотря на то, что это последний шаг для большинства случаев, вы все равно можете использовать --verbose
для поиска любых возможных возможных проблем.
bin/console doctrine:schema:update --verbose
Убедитесь, что ваши объекты помещены в каталог Entity
вашего пакета. В моем случае они были в Entities
вместо этого.
Для меня создание всех объектов из cmd выполняло работу.
В моем случае я решаю проблему создания папки Entity . По какой-то причине это было устранено. Я надеюсь, что это может помочь.
У меня была такая же проблема. Для меня это было то, что мой каталог под названием «Entity» не был в «AppBundle», а в каталоге «src». Перемещение каталога «Entity» в каталог «AppBundle» устранило проблему для меня!