0

我正在尝试为我网站上的内容页面构建一个模型,并给它一个名为“相关页面”的自我引用。现在,如果我构建我的模型并尝试在管理生成器中创建一个新页面,一切正常。如果我给页面一个相关页面(或更多)它也可以正常工作,但是如果我转到另一个页面并尝试编辑引用 symfony 崩溃:

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

我在 phpmyadmin 中检查了它,并注意到在关联表中我有 2 个 id(id1 和 id2),只有第一个 id 是链接:

(对不起,我无法粘贴链接)

我试图为关联表提供一个“id”字段,所以我有 3 个字段(id、id1、id2),我看到当我将另一个页面中的关系更新(page2 到 page1 和 page2 到 page3)时,它正在为该页面创建关系(page2 到 page1 和 page3)并且它正在删除旧的关系(它是 page1 到 page2 和 page1 到 page3)并且我在关联表中的最终关系是 page1 到第 1 页(?? ?) 第 2 页到第 1 页和第 2 页到第 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 管理生成器。我是否必须编写一些代码来处理这个问题,还是我做错了什么?

我检查了学说文档: 链接文本

似乎一切都很好。

4

3 回答 3

0

您需要添加onDelete: CASCADERelatedPages关系中。

这是 Symfony 错误:http ://trac.symfony-project.org/ticket/6273

于 2010-10-24T20:56:03.200 回答
0

好吧,这是某种 Doctrine 错误:

链接文本

解决方案就在那里。

于 2010-10-25T19:01:09.457 回答
0

edem 解决方案对我不起作用。
这是我的解决方案。
把它写在 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
于 2011-04-11T08:23:38.793 回答