In my Symfony 5 project, I am trying to delete an entity, as well as its children, but I have this error:
An exception occurred while executing 'DELETE FROM parametres_admin WHERE id = ?' with params [34]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
testApp.entreprise, CONSTRAINTFK_D19FA6019935CA7FOREIGN KEY (parametres_admin_id) REFERENCESparametres_admin(id))
However, it seems to me that I have configured my entity correctly?
I want to delete this one
Entreprise
/**
* @ORM\Entity(repositoryClass=EntrepriseRepository::class)
*/
class Entreprise
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity=User::class, mappedBy="entreprise", orphanRemoval=true)
*/
private $users;
/**
* @ORM\OneToOne(targetEntity=ParametresAdmin::class, inversedBy="entreprise", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=true)
*/
private $parametresAdmin;
//...
ParametresAdmin
/**
* @ORM\Entity(repositoryClass=ParametresAdminRepository::class)
*/
class ParametresAdmin implements Serializable
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity=Entreprise::class, mappedBy="parametresAdmin", cascade={"persist"})
*/
private $entreprise;
//...
In the Entreprise entity, I put cascade={"persist", "remove"} for parametresAdmin relation, to remove ParametresAdmin when removing Entreprise row.
And in my ParametresAdmin entity, I put cascade={"persist"} for entreprise relation. Not , cascade={"persist", "remove"} to be sure you don't get any mistakes. (I put it on before, but I already had this error, so I removed it but it didn't change anything)