Doctrine onDelete = "CASCADE" не работает с joinColumn - PullRequest
0 голосов
/ 12 октября 2018

Согласно документации и этого поста Мне просто нужно указать onDelete = "CASCADE" в @ORM \ JoinColumn, и он должен создать внешний ключ, который каскадно удаляется.Я сделал это ..

/**
 * @ORM\OneToMany(targetEntity="OrderDates", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=TRUE)
 * @ORM\JoinColumn(name="order_id", referencedColumnName="id", onDelete="CASCADE")
 */
private $dates;

однако, когда я делаю миграцию, генерируемый им FK не каскадируется при удалении.

ALTER TABLE order_dates ADD CONSTRAINT FK_28EABDE38D9F6D38 FOREIGN KEY (order_id) REFERENCES orders (id)

Я тоже пытался удалить часть , cascade={"persist", "remove"}, orphanRemoval=TRUEно безрезультатно.

Редактировать: Я также пытался установить его на обратной стороне, но он тоже не работает (на самом деле внешний ключ вообще не создается, когда я это делаюэто):

/**
 * @ORM\ManyToOne(targetEntity="Orders", inversedBy="dates", cascade={"persist"})
 * @ORM\JoinColumn(name="order_id", referencedColumnName="id", onDelete="CASCADE")
 */
private $order;

1 Ответ

0 голосов
/ 12 октября 2018

onDelete="CASCADE" работает на стороне владельца (inversedBy), а не на обратной стороне (mappedBy).

...