У меня есть проект на Symfony2. Я должен сказать, что я вообще не считаю себя мастером Symfony2. Вы могли бы сказать, что я новичок.
Мои сущности связаны через YAML с базой данных, а класс Entity создается в php, не связанном аннотациями.
Мне нравится Entity:
Project/CoreBundle/Resources/config/doctrine/Card.orm.yml Project/CoreBundle/Entity/Card.php
Карточка – элемент панели инструментов, который можно перетащить для удобства пользователя.
Соответствующие Card.orm.yml и Card.php имеют структуру, соответствующую таблице в db. Я создал этот кусок кода и отлично работал.
Проблема: теперь, когда я пытаюсь добавить больше полей в таблицу, в orm и Entity, они не выбираются с помощью запроса Symfony2 / Doctrine2 (я искал его в отладчике и даже не запрашивал новое поле SELECTED).
Более того, я пытаюсь добавить любое поле, и оно не становится привязанным. В восстановленном объекте он всегда равен NULL. Я просмотрел MAPPING этого объекта, и это поле БУДЕТ СООТНО. Но в select query, опять же, его нет. Я использовал четкие механизмы кэширования и т. Д. – не работал. Я удалил ДРУГИЕ поля из orm и entity – Doctrine2 выдает исключения, хотя, когда я удаляю это поле (оно все еще присутствует в таблице) и работает так же, просто возвращает null.
Что работает:
$queryBuilder ->select(array('card','card.isSpecialCard'))
Поле isSpecialCard – это тот, который не привязан к выбору, поэтому я должен настроить его вне таблицы и ТОГДА он загружается с помощью select. Кроме того, он загружается на другом уровне массива, СЛЕДУЮЩИЙ К ОБЪЕКТА КАРТЫ, НЕ В ОБЪЕКТЕ, хотя объект все еще имеет это поле, И ЭТО ЗНАЧЕНИЕ КАК ЕСЛИ ЭТО БЫЛО ИЗБРАННЫ.
Я использую Symfony 2.1.
Вы не должны вносить изменения вручную, но пусть драйвер ORM сделает это за вас. Используйте эти две команды для обновления Entity и вашей базы данных соответственно:
php app/console doctrine:generate:entities Namespace:Card php app/console doctrine:schema:update --force