добавить новый столбец после другого столбца в symfony, используя схему документации - PullRequest
2 голосов
/ 09 мая 2020

Код

Сущность для таблицы комнаты.

use Doctrine\ORM\Mapping as ORM;

class Room
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(type="string")
     */
    private $name;

   /**
     * @var int
     *
     * @ORM\Column(type="integer")
     */
    private $groupOrder;

    /**
     * @var boolean
     *
     * @ORM\Column(type="boolean", options={"after": "active","default": false})
     */
    private $isAssociable;

    /**
     * @var bool
     *
     * @ORM\Column(type="boolean", options={"default" : 1})
     */
    private $active = true;

    /**
     * @var \DateTime
     *
     * @ORM\Column(type="datetime")
     */
    private $createdAt;

    /**
     * @var \DateTime
     *
     * @ORM\Column(type="datetime")
     */
    private $updatedAt;
}

Я выполняю следующую команду на консоли, но результат не соответствует ожиданиям

php bin/console doctrine:schema:update --dump-sql

Ожидаемый результат

ALTER TABLE room ADD is_associable TINYINT (1) DEFAULT '0' NOT NULL ПОСЛЕ активного действия;

Что я получаю (Вывод)

ALTER TABLE room ADD is_associable TINYINT (1) DEFAULT '0' NOT NULL;

1 Ответ

0 голосов
/ 11 мая 2020

Похоже, что изначально вы не можете этого сделать в Doctrine. Параметр Option для столбца, который может обрабатывать это, недоступен. В любом случае, возможно, вы сможете добиться этого (конечно, все идеи - обходные пути):

  • создание пользовательской аннотации «позиция» для поля, конечно, вам нужно написать настраиваемую команду, которая будет запускаться doctrine:schema:update --dump-sql и изменит вывод sql (это просто моя идея).

  • сделайте это с помощью миграции, где вы поместите необработанный sql

  • создать PR или выпуск в проект Doctrine ORM на github - https://github.com/doctrine/orm -:)

...