Я использую Расширение Doctrine 2 Tree-Nestedset с базой данных MySQL InndoDB.
Схема таблицы yml выглядит следующим образом:
Ext\Entity\PageElement:
type: entity
table: page_element
repositoryClass: Gedmo\Tree\Entity\Repository\NestedTreeRepository
gedmo:
tree:
type: nested
id:
id:
type: integer
generator:
strategy: AUTO
fields:
element_object_data:
type: array
nullabe: true
element_object_type:
type: string
nullable: true
lft:
type: integer
gedmo:
- treeLeft
rgt:
type: integer
gedmo:
- treeRight
root:
type: integer
gedmo:
- treeRoot
lvl:
type: integer
gedmo:
- treeLevel
sort_order:
type: integer
nullable: true
created:
type: datetime
gedmo:
timestampable:
on: create
updated:
type: datetime
gedmo:
timestampable:
on: update
manyToOne:
parent:
targetEntity: Ext\Entity\PageElement
inversedBy: children
gedmo:
- treeParent
oneToMany:
children:
targetEntity: Ext\Entity\PageElement
mappedBy: parent
При попытке удалить любой узел, содержащий дочерние элементы, я получаю сообщение об ошибке mysql:
PDOException: SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется (page_element
, CONSTRAINT page_element_ibfk_1
ИНОСТРАННЫЙ КЛЮЧ (parent_id
) ССЫЛКИ page_element
(id
))
Я понимаю, что это из-за ограничений ссылок InnoDB, но я не уверен, какчтобы избежать этого?