Доктрина 2: Дерево - Нестедсет и InnoDB - PullRequest
2 голосов
/ 13 августа 2011

Я использую Расширение 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, но я не уверен, какчтобы избежать этого?

1 Ответ

3 голосов
/ 16 августа 2011
...