Я пытаюсь добавить ссылку на профиль (называемый Square) на мою модель оплаты (расширение Payum \ Core \ Model \ ArrayObject), но я не могу добавить внешний ключ на столе. Я хочу сделать это, чтобы при обработке платежа я мог обновить поле, в котором говорится, что квадрат теперь оплачен. Вот мои настройки:Payum Symfony Doctrine не удается создать таблицу
Square.php
/**
* @var integer
*
* @ORM\Column(name="msid", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $msid;
Payment.php
/**
* @ORM\OneToOne(targetEntity="Square")
* @ORM\JoinColumn(name="msid", referencedColumnName="msid")
*/
private $square;
Коды ошибок:
[Doctrine\DBAL\Exception\DriverException]
An exception occurred while executing 'ALTER TABLE payment ADD CONSTRAINT FK_6D28840D405F5364 FOREIGN KEY (msid) REFERENCES square (msid)':
SQLSTATE[HY000]: General error: 1005 Can't create table 'memorysq_version2.#sql-1658_1487b' (errno: 150)
Некоторые другие лица используют ИИМС поле, чтобы присоединиться на, он просто не работает с моей моделью Payum Payment.
[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'memorysq_version2.#sql-1658_1487b' (errno: 150)
[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'memorysq_version2.#sql-1658_1487b' (errno: 150)
Выход --dump-SQL
ALTER TABLE comment ADD CONSTRAINT FK_9474526C405F5364 FOREIGN KEY (msid) REFERENCES square (msid);
ALTER TABLE asset ADD CONSTRAINT FK_2AF5A5C405F5364 FOREIGN KEY (msid) REFERENCES square (msid);
ALTER TABLE payment ADD CONSTRAINT FK_6D28840D405F5364 FOREIGN KEY (msid) REFERENCES square (msid);
ALTER TABLE square ADD CONSTRAINT FK_CDE368A9F132696E FOREIGN KEY (userid) REFERENCES user (userid);
ALTER TABLE square ADD CONSTRAINT FK_CDE368A96AFF851C FOREIGN KEY (squaretype) REFERENCES product (id);
ALTER TABLE square ADD CONSTRAINT FK_CDE368A9DC01AA6E FOREIGN KEY (dualpicture) REFERENCES asset (assetid);
ALTER TABLE square ADD CONSTRAINT FK_CDE368A97F98CD1C FOREIGN KEY (clientid) REFERENCES client (clientid);
ALTER TABLE square ADD CONSTRAINT FK_CDE368A916DB4F89 FOREIGN KEY (picture) REFERENCES asset (assetid);
Некоторые другие объекты используют ИИМС поле, чтобы присоединиться на это просто не работает с моей Payum модели оплаты. Любая помощь будет принята с благодарностью.
Чтобы подчеркнуть, почему я правильно ответил на этот ответ, проблема, с которой я столкнулась, заключалась в том, что мои старые таблицы были MyISAM, а добавленная новая доктрина таблиц была InnoDB. Как только я обновил все таблицы до InnoDB, внешние ключи были добавлены соответствующим образом. Спасибо Себастьяну. – AMB0027