Pregunta

Estoy tratando de construir un modelo para las páginas de contenido en mi sitio, y me dio una autorreferencia llamado 'página Relacionada'. Ahora bien, si construyo mis modelos y tratar de crear una nueva página en el Generador de Administración todo funciona bien. Si me dan la página de una página relacionada (o más) que trabaja muy bien también, pero si voy a la otra página y tratar de editar las referencias Symfony accidentes:

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

he comprobado en phpmyadmin y notado que en la tabla de asociación tengo 2 ids (ID1 e ID2) y sólo la primera ID es un enlace:

(lo siento, no pude pegar un vínculo)

He intentado dar un campo 'id' de la tabla de asociación, así que tenía 3 campos (ID, ID1, ID2), y vi que cuando actualizo las relaciones en la otra página (página 2 a la Página 1 y página 2 a page3 ), que es la creación de las relaciones de esa página (página 2 a la página 1 y página 3) y que está eliminando las viejas relaciones (que era page1 a page2 y page1 a página 3) y las relaciones finales que tengo en la tabla de asociación es page1 a la página 1 (???) página 2 a page1 y page2 a page3.

Mis modelos son:

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

Estoy usando el generador de administración de Symfony. ¿Tengo que escribir código para manejar esto, o estoy haciendo algo mal?

he comprobado la documentación de la doctrina: texto del enlace

y parece que todo está bien.

¿Fue útil?

Solución 2

De acuerdo, era una especie de Doctrina de errores:

texto del enlace

La solución es allí.

Otros consejos

Es necesario añadir onDelete: CASCADE a la relación RelatedPages.

Aquí está el error de Symfony: http://trac.symfony-project.org/ticket/6273

edem solución no está funcionando para mí.
Esta es mi solución.
Escribir esto en lib / model / RelatedPage.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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top