Доктрина Самовещание не работает в Symfony 1.4 при обновлении или удалении

StackOverflow https://stackoverflow.com/questions/4008170

Вопрос

Я пытаюсь построить модель для страниц контента на моем сайте, и я дал ему собственную ссылку с именем «связанные страницы». Теперь, если я построю свои модели и попытаюсь создать новую страницу в генераторе администратора все работает нормально. Если я даю страницу связанную страницу (или больше), она тоже работает нормально, но если я перейду на другую страницу и попытаюсь редактировать сбои ссылок Symfony:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-2' for key 'PRIMARY'

Я проверил его в phpmyadmin и заметил, что в таблице ассоциации у меня есть 2 идентификатора (ID1 и ID2), и только первый идентификатор - это ссылка:

(Извините, я не мог вставить ссылку)

Я пытался дать поле «ID» в таблицу ассоциации, поэтому у меня было 3 поля (ID, ID1, ID2), и я видел, что когда я обновляю отношения на другой странице (Page2 - Page1 и Page2 - Page3), это Создание отношений для этой страницы (Page2 to Page1 и Page3), и она удаляет старые отношения (она была страница1 к странице2 и страницах к странице3) и окончательные отношения у меня в таблице ассоциации, является страницей Page 1 (?? ?) Page 2 на Page1 и Page2 к странице3.

Мои модели:

Page:
//...
      relations:
        RelatedPages:
          class: Page
          local: id1
          foreign: id2
          refClass: RelatedPage
          equal: true

RelatedPage:
  columns:
    id1:
      type: integer(4)
      primary: true
      unsigned: true
      notnull: true
    id2:
      type: integer(4)
      primary: true
      unsigned: true
      notnull: true

Я использую генератор администратора Symfony. Должен ли я написать какой-нибудь код, чтобы справиться с этим, или я делаю что-то не так?

Я проверил доктрину документацию:Ссылка текста

И кажется, что все в порядке.

Это было полезно?

Решение 2

Хорошо, это была какая-то ошибка доктрины:

Ссылка текста

Решение там.

Другие советы

Вам нужно добавить onDelete: CASCADE к тому RelatedPages связь.

Вот ошибка Symfony: http://trac.symfony-project.org/ticket/6273.

Решение Edem не работает для меня.
Это мое решение.
Напишите это в lib / model / forcentpage.class.php

class RelatedPage extends BaseRelatedPage
{


    public function save(Doctrine_Connection $conn = null)
    {
        if ($this->isNew() !== true && $this->getId1() == $this->getId2()) {
            return;
        }//end if

        return parent::save($conn);
    }//end save()

}//end class
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top