У меня есть этот Entity
в Symfony2:
<?php namespace Project\UserBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Users * * @ORM\Table(name="users") * @ORM\Entity */ class Users { /** * @var integer * * @ORM\Column(name="user_id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $userId; /** * @var integer * * @ORM\Column(name="test", type="integer", nullable=false) */ private $test; }
Я добавляю следующую строку между {{userId}} и {{test}}:
/** * @var integer * * @ORM\Column(name="superbanana", type="integer", nullable=false) */ private $superbanana;
Затем я запускаю консоль:
php app/console doctrine:schema:update --dump-sql
Это дает мне ответ:
ALTER TABLE users ADD superbanana INT NOT NULL
** Как я могу это сделать? **
ALTER TABLE users ADD superbanana INT NOT NULL AFTER user_id
Если вы не хотите отбрасывать / создавать таблицу, вы можете использовать атрибут @columnDefinition и сами определять определение столбца.
/** * @var integer * * @ORM\Column(type="integer", columnDefinition="INT NOT NULL AFTER `user_id`") */ private $superbanana;
Я не думаю, что это возможно, потому что использование Doctrine означает, что вам все равно, как управление таблицей больше (по-видимому, кто-то пробовал ее раньше).
И поскольку вы никогда не используете MySQL напрямую, я думаю, что нет никакой утилиты для указания порядков столбцов для Doctrine.
Но вы всегда можете удалить таблицу, чтобы Doctrine полностью перестроил таблицу, соблюдая ваш заказ.