Доктрина - обновлять столбцы с помощью fk
У меня есть 2 таблицы (назовем их A (id
, some_other_columns
) и B (a_id
, some_other_columns
)). очевидно a_id
от точки B до id
из A (и имеет на нем FK). Все хорошо. Теперь... проблема в том, что при создании таблиц идентификатор был установлен как подписанный. Я хочу исправить это и сделать его без знака (но это может быть и любое другое изменение, которое влияет на определение столбца).
Если вы делаете это из запросов, вы деактивируете fks / удаляете этот fk, вносите изменения, активируете back / add fk back.
Мне нужно сделать это из doctrine: schema: update (потому что он запускается автоматически при развертывании сервера, bla bla -> скажем, потому что процедура).
Я внес конкретные изменения в сущности:
A:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
* @ORM\Table(name="B", uniqueConstraints={@ORM\UniqueConstraint(name="a_b", columns={"aEntity"})})
* @ORM\HasLifecycleCallbacks()
B:
/**
* @var aEntity
*
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\A", inversedBy="bEntity")
* @ORM\JoinColumn(name="a_id", referencedColumnName="id")
*/
private $aEntity;
Сгенерированный код выглядит правильно:
$php app/console doctrine:schema:update --dump-sql
ALTER TABLE A CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL;
ALTER TABLE B CHANGE a_id a_id INT UNSIGNED DEFAULT NULL;
Но... конечно, я получаю ошибку (поскольку fk ограничивает определения столбцов и не отключается).
An exception occurred while executing 'ALTER TABLE A CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL':
SQLSTATE[HY000]: General error: 1833 Cannot change column 'id': used in a foreign key constraint 'FK_3041AF5B7975B7E7' of table 'db_name.a'
Как я могу обновить таблицы, используя обновление схемы доктрины (может быть, у него есть флаг или что-то? Лично я не могу найти ни одной.)?