Я пытаюсь переопределить пакет продуктов, я сделал это успешно, но получает сообщение об ошибке при попытке удалить родительский объект, что есть продукты, какSylius переопределение продукт нарушение целостности ограничения
порожденныхвот отображение файл product.orm .xml
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping">
<mapped-superclass name="Sylius\Component\Product\Model\Product" table="sylius_product">
<id name="id" column="id" type="integer">
<generator strategy="AUTO" />
</id>
<field name="name" column="name" type="string">
<gedmo:versioned />
</field>
...
</mapped-superclass>
</doctrine-mapping>
и вот мой product.orm.xml файл
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="WeShop\Bundle\CoreBundle\Entity\Product" table="sylius_product">
<many-to-one field="boutique" target-entity="WeShop\Bundle\BoutiqueBundle\Entity\Boutique" inversed-by="produits">
<join-column name="boutique_id" referenced-column-name="id" nullable="true" onDelete="SET NULL" />
</many-to-one>
</entity>
</doctrine-mapping>
в WeShop \ Bundle \ BoutiqueBundle \ Entity \ Boutique я действительно есть
<?php
namespace WeShop\Bundle\BoutiqueBundle\Entity;
use Sylius\Component\Core\Model\ProductInterface as ProductInterface;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
class Boutique
{
private $produits;
public function __construct(){
$this->produits = new ArrayCollection();
}
public function getProduits(){
return $this->produits;
}
public function setProduits(ProductInterface $produit){
$this->produits[] = $produit;
return $this;
}
}
и в WeShop \ Bundle \ CoreBundle \ Entity \ Product У меня есть этот
<?php
namespace WeShop\Bundle\CoreBundle\Entity;
use WeShop\Bundle\CoreBundle\Model;
use WeShop\Bundle\BoutiqueBundle\Entity\BoutiqueInterface as BoutiqueInterface;
use Sylius\Component\Core\Model\Product as BaseProduct;
class Product extends BaseProduct
{
private $boutique;
public function getBoutique()
{
return $this->boutique;
}
public function setBoutique(BoutiqueInterface $boutique = null)
{
$this->boutique = $boutique;
return $this;
}
}
Работа с бутика объекта (магазин), я могу работать с ним так, как я хочу, все работает, теперь проблема, когда я пытаюсь удалить его я получаю
An exception occurred while executing 'DELETE FROM weshop_boutique WHERE id = ?' with params [2]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`sylius_dev`.`sylius_product`, CONSTRAINT `FK_677B9B74AB677BE6` FOREIGN KEY (`boutique_id`) REFERENCES `weshop_boutique` (`id`))
Пожалуйста, обратите внимание, что бутики (магазин) могут иметь несколько продуктов в нем, но продукт может быть единственным ребенком в течение одного магазина (магазин)
У меня действительно есть документы сверток с той же логикой, и когда я пытаюсь удалить бутику (зная, что в таблице sylius_product нет ни одной строки, ссылающейся бутику {NULL}), документы удаляются
вот мои документы ОРМ XML файл
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity table="weshop_documents" repository-class="WeShop\Bundle\DocumentsBundle\Entity\DocumentsRepository" name="WeShop\Bundle\DocumentsBundle\Entity\Documents">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<field name="intitule" type="string" column="intitule" length="255"/>
<field name="url" type="string" column="url" length="255"/>
<many-to-one field="boutique" target-entity="WeShop\Bundle\BoutiqueBundle\Entity\Boutique" inversed-by="documents">
<join-column name="boutique_id" referenced-column-name="id" nullable="false" />
</many-to-one>
</entity>
</doctrine-mapping>
Спасибо заранее