لا تعمل الإشارة الذاتية العقيدة في Symfony 1.4 عند التحديث أو الحذف
-
25-09-2019 - |
سؤال
أحاول إنشاء نموذج لصفحات المحتوى على موقعي ، وأعطيته مرجعًا ذاتيًا يسمى "صفحة ذات صلة". الآن إذا قمت ببناء طرزاتي وحاولت إنشاء صفحة جديدة في مولد المسؤول ، كل شيء يعمل بشكل جيد. إذا أعطيت الصفحة صفحة ذات صلة (أو أكثر) ، فهي تعمل بشكل جيد أيضًا ، ولكن إذا ذهبت إلى الصفحة الأخرى وحاولت تحرير المراجع Symfony Musts:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-2' for key 'PRIMARY'
لقد راجعت ذلك في PhpmyAdmin ولاحظت أنه في جدول الارتباط ، لديّ معرفان (ID1 و ID2) وفقط المعرف الأول هو رابط:
(آسف لم أستطع لصق رابط)
حاولت إعطاء حقل "معرف" لجدول الارتباط ، لذا كان لدي 3 حقول (ID ، ID1 ، ID2) ، ورأيت أنه عندما أقوم بتحديث العلاقات في الصفحة الأخرى (Page2 إلى Page1 و Page2 إلى Page3) ، IT هل يقوم بإنشاء العلاقات لتلك الصفحة (Page2 to Page1 و Page3) وهو يحذف العلاقات القديمة (كانت الصفحة 1 إلى Page2 و Page1 إلى Page3) والعلاقات النهائية التي لدي في جدول الارتباط هي الصفحة 1 إلى الصفحة 1 (؟؟ ؟) صفحة 2 إلى Page1 و Page2 إلى Page3.
نماذج بلدي هي:
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/knowndpage.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