Hola Tengo un problema al intentar eliminar en cascada entidades en OneToMany relaciones. Después de algunas horas de depuración intenté degradar la doctrina de la última versión 2.1.2 a 2.0.2 y de repente comienza a funcionar.Doctrine 2.0 vs 2.1 cascada eliminar OneToMany
Imagin dos entidades Empresa y dirección en relación 1: N.
/**
* @Entity
*/
class Company extends Entity
{
/**
* @var integer
* @id @Column(type="integer")
* @generatedValue
*/
private $id;
/**
* @var Collection
* @OneToMany(targetEntity="Address",mappedBy="company", cascade={"persist","remove"})
*/
private $addresses;
}
/**
* @Entity
*/
class Address extends Entity
{
/**
* @var integer
* @id @Column(type="integer")
* @generatedValue
*/
private $id;
/**
* @var Company
* @ManyToOne(targetEntity="Company", inversedBy="addresses")
* @JoinColumn(name="company_id", referencedColumnName="id",nullable=false)
*/
private $company;
}
Cuando intento eliminar la entidad Empresa, me gustaría que también se eliminen las direcciones asignadas.
$em->remove($company);
$em->flush();
En la doctrina 2.1.2 La eliminación de las direcciones no se realiza de modo que la restricción de integridad falla. En la versión 2.0.2 funciona perfectamente. Lo más curioso es que, si uso la extensión EntityAudit https://github.com/simplethings/EntityAudit, LogRevisionListener correlaciona las entidades de direcciones (configúrelas revtype = DEL) en la doctrina 2.1.2 (por supuesto en 2.0.2 también) pero UnitOfWork no lo está eliminando.
¿Hay alguna diferencia en cómo manejar la eliminación de cascada en 2.0.2 y en 2.1.2?
Muchas gracias
Hoy tropecé con este problema, estoy usando 2.1.6. :/ – mokagio
Bueno, tengo que corregirme a mí mismo, ¡me funciona ahora! Estaba usando 'cascade = {" all "}' pero cuando lo cambié en 'cascade = {" remove "}' todo comenzó a funcionar bien. – mokagio
Aunque debo decir que probablemente mi problema no sea completamente debido al conjunto de anotaciones o a Doctrine en sí, porque estoy haciendo una manipulación intensiva de las entidades y, después de algunas pruebas sobre la combinación de las opciones en cascada, descubrí que el La opción '' merge '' fue la que dio problemas. Espero que ayude de todos modos :) – mokagio