удалить удалить каскад действий symfony - PullRequest
0 голосов
/ 19 марта 2020

Доброе утро всем,

Я ищу решение каскадного удаления данных из моей таблицы.

У меня есть таблица заказов:

    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)) ",

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...