У меня возникла небольшая проблема при удалении объекта, назначенного другому с отношением OneToMany.
У меня есть объект с именем Business, и у него есть свойство "units", которое представляет собой набор объектов Unit.в отношениях OneToMany (в компании может быть много единиц).
Когда я пытаюсь удалить единицу из базы данных, получаю нарушение внешних ключей, это не позволит мне удалить единицу из бизнесасущность.
Вот сокращенная версия обеих сущностей:
БИЗНЕС
/**
* @ORM\Entity(repositoryClass="App\Repository\BusinessRepository")
*/
class Business
{
/**
* @var ArrayCollection
* @ORM\OneToMany(targetEntity="App\Entity\Unit", mappedBy="business")
*/
private $units;
}
UNIT
/**
* @ORM\Entity(repositoryClass="App\Repository\UnitRepository")
*/
class Unit
{
/**
* @var Business
* @ORM\ManyToOne(targetEntity="App\Entity\Business", inversedBy="units")
* @ORM\JoinColumn(name="business_id", referencedColumnName="id")
*/
private $business;
}
Итак, в UnitRepository у меня есть метод удаления:
/**
* @param Unit $unit
*/
public function delete(Unit $unit){
$this->em->remove($unit);
$this->em->flush();
}
И я получаю эту ошибку:
An exception occurred while executing 'DELETE FROM unit WHERE id = ?' with params [1]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`businessdirectory`.`unit_day`, CONSTRAINT `FK_F03D80CEF8BD700D` FOREIGN KEY (`unit_id`) REFERENCES `unit` (`id`))
Я не знаю, настроил ли яотношения неправильно или нет здесь, но я должен иметь возможность удалить единицу из бизнеса, и я должен иметь возможность удалить весь бизнес с его единицами.