Я работаю с фреймворком Sylius. Я слежу за руководство по настройке моделей.
Я пытаюсь добавить поле notice в модель Taxon, которая уже переопределена в моем проекте. Для этого я добавил описание поля в Taxon.orm.yml модели:
MyProject\Bundle\ShopBundle\Entity\Taxon:
type: entity
table: sylius_taxon
# {Relationships code...}
fields:
# {Some existing fields...}
notice:
type: text
nullable: true
Я также добавил поле, геттер и сеттер в переопределяющий класс Taxon.
Затем я пытаюсь запустить bin/console doctrine:migrations:diff, но когда я запускаю bin/console даже без каких-либо аргументов, он вылетает со следующим исключением:
[Doctrine\DBAL\Exception\InvalidFieldNameException]
An exception occurred while executing 'SELECT s0_.code AS code_0, s0_.tree_left AS tree_left_1, s0_.tree_right AS tree_right_2, s0_.tree_level AS tree_level_3, s0_.position AS position_4, s0_.id AS id_5, s0_
.created_at AS created_at_6, s0_.updated_at AS updated_at_7, s0_.enabled AS enabled_8, s0_.default_markup AS default_markup_9, s0_.notice AS notice_10, s0_.tree_root AS tree_root_11, s0_.parent_id AS parent_
id_12 FROM sylius_taxon s0_ WHERE s0_.parent_id IS NULL ORDER BY s0_.tree_left ASC':
SQLSTATE[42S22]: Column not found: 1054 Unknown column 's0_.notice' in 'field list'`
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[42S22]: Column not found: 1054 Unknown column 's0_.notice' in 'field list'`
[PDOException]
SQLSTATE[42S22]: Column not found: 1054 Unknown column 's0_.notice' in 'field list'
Если я уберу изменения в Taxon.orm.yml, bin/console снова заработает. Чего не хватает в моих изменениях?




Когда вы добавляете новое поле, вы должны doctrine:schema:update
Нет, вы должны использовать bin/console doctrine:migrations:diff, затем bin/console doctrine:migrations:migrate
@ Shady это только в том случае, если он использует миграции !!! Если у него есть таблица, добавленная вручную, он может не захотеть использовать миграции
он использует Sylius, который использует Doctrine Migration, так что... И он также говорит в своем сообщении, что использует Doctrine Migration.
@Shady в документах Силиуса написано: 4. Update the database. There are two ways to do it. via direct database schema update: $ php bin/console doctrine:schema:update --force
Одна из конфигураций моих пакетов содержала репозиторий этой модели, вот и все. Я временно удалил конфигурацию пакета из config.yml, и bin/console заработал.
Похоже, репозиторий этой модели внедряется в одну из моих пользовательских консольных команд, и это вызывает проблему. Я опубликую ответ, когда найду, какая это команда.