Good morning all,
I am looking for a solution to cascade delete data from my table.
I have an Orders table:
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;
}
and I have relation with several table: order_history, order_details.
I am looking to delete the order information in the other tables (order_history and order_details) when I delete an order. I tried by adding the parameters "Cascade" etc .... but its does not work I have this error:
"hydra:description": "An exception occurred while executing 'DELETE FROM order_history WHERE id = ?' with params [7]:\n\nSQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
db_api_dev
.order
, CONSTRAINTorder_ibfk_3
FOREIGN KEY (last_history_id
) REFERENCESorder_history
(id
))",
Thank you for your help