Не могу добавить поле в модель в Symfony, сбой bin/console

Я работаю с фреймворком 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 снова заработает. Чего не хватает в моих изменениях?

Похоже, репозиторий этой модели внедряется в одну из моих пользовательских консольных команд, и это вызывает проблему. Я опубликую ответ, когда найду, какая это команда.

gvlasov 31.01.2019 16:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
1
397
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Когда вы добавляете новое поле, вы должны doctrine:schema:update

Нет, вы должны использовать bin/console doctrine:migrations:diff, затем bin/console doctrine:migrations:migrate

Pierre 11.02.2019 00:13

@ Shady это только в том случае, если он использует миграции !!! Если у него есть таблица, добавленная вручную, он может не захотеть использовать миграции

Alexander Dimitrov 11.02.2019 06:23

он использует Sylius, который использует Doctrine Migration, так что... И он также говорит в своем сообщении, что использует Doctrine Migration.

Pierre 11.02.2019 09:45

@Shady в документах Силиуса написано: 4. Update the database. There are two ways to do it. via direct database schema update: $ php bin/console doctrine:schema:update --force

Alexander Dimitrov 11.02.2019 10:26
Ответ принят как подходящий

Одна из конфигураций моих пакетов содержала репозиторий этой модели, вот и все. Я временно удалил конфигурацию пакета из config.yml, и bin/console заработал.

Другие вопросы по теме