Доброе утро всем,
Я ищу решение каскадного удаления данных из моей таблицы.
У меня есть таблица заказов:
class Order
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"orderGET", "orderDELETE", "orderPostCustomer"})
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $firstname;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $lastname;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $email;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $phone;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $address;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $address1;
/**
* @ORM\Column(type="integer")
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $zipcode;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGET", "orderPostCustomer", "orderTracking"})
*/
private $city;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $country;
/**
* @ORM\Column(type="string", length=2000, nullable=true)
* @Groups("orderGetItem")
*/
private $urlTracking;
/**
* @ORM\Column(type="string", length=2000, nullable=true)
* @Groups("orderGetItem")
*/
private $urlTracking;
/**
* @ORM\Column(type="integer")
* @Groups({"orderGetItem", "orderPostCustomer"})
*/
private $idOrderMerchant;
/**
* @ORM\Column(type="string", length=50, nullable=true)
* @Groups({"orderGET"})
*/
private $idTrackingMerchant;
/**
* @ORM\Column(type="string", length=50, nullable=true)
* @Groups("orderGET")
*/
private $idTracking;
/**
* @ORM\OneToMany(targetEntity="App\Entity\OrderHistory", mappedBy="orderId", cascade={"persist", "remove"})
* @Groups({"orderGetItem", "orderTracking"})
*/
private $orderHistories;
/**
* @ORM\OneToOne(targetEntity="App\Entity\OrderHistory", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="last_history_id", referencedColumnName="id")
* @Groups({"orderGetCollection", "orderTracking"})
*/
private $lastHistory;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Customer", inversedBy="orders")
* @ORM\JoinColumn(nullable=true)
* @Groups({"orderGET", "orderTracking"})
*/
private $customer;
/**
* @ORM\Column(type="integer")
* @Groups({"orderGetItem", "orderPostCustomer"})
*/
private $weightMerchant;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups("orderGetItem")
*/
private $weightReal;
/**
* @ORM\Column(type="integer")
* @Groups({"orderGetItem", "orderPostCustomer", "orderTracking"})
*/
private $packages;
/**
* @ORM\Column(type="datetime")
* @Groups("orderGET")
*/
private $dateAdd;
/**
* @ORM\Column(type="datetime")
* @Groups("orderGET")
*/
private $dateUpd;
/**
* @ORM\OneToMany(targetEntity="App\Entity\OrderDetail", mappedBy="orderId", cascade={"persist", "remove"})
* @Groups({"orderGetItem", "orderPostCustomer"})
*/
private $orderDetails;
}
и я имеют отношение к нескольким таблицам: order_history, order_details.
Я ищу, чтобы удалить информацию о заказе в других таблицах (order_history и order_details) при удалении заказа. Я попытался, добавив параметры "Cascade" et c .... но это не работает. У меня есть эта ошибка:
"hydra: description": "Возникла исключительная ситуация при выполнении 'DELETE FROM order_history ГДЕ id =? ' с параметрами [7]: \ n \ nSQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (db_api_dev
. order
, CONSTRAINT order_ibfk_3
FOREIGN KEY (last_history_id
) ССЫЛКИ order_history
(id
)) ",
Спасибо за помощь