Lehre Selbst Referenzierung funktioniert nicht in Symfony 1.4 bei der Aktualisierung oder Löschen
-
25-09-2019 - |
Frage
Ich versuche, ein Modell für Content-Seiten auf meiner Website zu bauen, und ich habe es selbst Referenz namens ‚Verwandte Seite‘. Nun, wenn ich meine Modelle bauen und versuchen, eine neue Seite im Admin-Generator zu schaffen, alles gut funktioniert. Wenn ich geben der Seite eine ähnliche Seite (oder mehr) funktioniert es auch in Ordnung, aber wenn ich auf die andere Seite gehen und versuchen zu bearbeiten die Referenzen symfony Abstürze:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-2' for key 'PRIMARY'
Ich habe es in phpMyAdmin und bemerken, dass in der Zuordnungstabelle ich habe 2-IDs (ID1 und ID2) und nur die erste ID ist ein Link:
(sorry ich konnte nicht einen Link einfügen)
Ich habe versucht, ein ‚id‘ Feld auf die Zuordnungstabelle zu geben, so dass ich drei Felder hatte (id, ID1, ID2), und ich sah, dass, wenn ich die Beziehungen in der anderen Seite (page2 zu Seite1 und Seite2 zu page3 aktualisieren ) ist es, die Beziehungen für die Seite (page2 zu Seite1 und page3) zu schaffen, und es wird die alten Beziehungen zu löschen (es page1 zu page2 und page1 zu page3 war) und die endgültigen Beziehungen i in der Zuordnungstabelle habe, ist page1 zu Seite 1 (???) Seite 2 bis Seite1 und Seite2 zu page3.
Meine Modelle sind:
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
Ich bin mit dem symfony Admin-Generator. Muss ich einen Code zu schreiben, dies zu umgehen, oder bin ich etwas falsch zu machen?
Ich habe die Lehre Dokumentation: link text
und es scheint, dass alles in Ordnung ist.
Lösung 2
Andere Tipps
Sie müssen onDelete: CASCADE
zum RelatedPages
Beziehung hinzuzufügen.
Hier ist der Symfony bug: http://trac.symfony-project.org/ticket/6273
edem Lösung ist für mich nicht funktioniert.
Dies ist meine Lösung.
Schreiben in 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