代码之家  ›  专栏  ›  技术社区  ›  Ropstah

PHP原则-违反完整性约束:1062重复条目(主键)

  •  1
  • Ropstah  · 技术社区  · 15 年前

    我装了很多 User 及相关 Group 来自自定义PDO查询的对象(使用doctrine connection=>$dbh=doctrine_manager::connection()->getdbh();)。查询涉及DQL不支持的交叉联接。

    我手动创建对象并传递如下值:

        foreach($pdo as $p) {    
            $u = new User();
            $u->userid = $p['userid'];
            $u->username = $['username'];
            //$u->some_field; skipped on purpose
            $u->Group->groupid = $['groupid'];
            $u->Group->groupname = $['groupname'];
            array_push($return, $set);
        }
    

    我希望能够 节约 这个 User() 对象(因为 $u->some_field 可在此上下文中更改)。然而,条令试图插入并且违反了关键约束。

    我知道错误被抛出,但是我希望能够 只有 更新该 some_field 列(也许最重要的是:不是组)。 是否可以使用上述预加载?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Jakub Zalas    15 年前

    好吧,你在创造新的物体,所以教义试图坚持它们。

    阅读条令记录: http://www.doctrine-project.org/documentation/manual/1_2/en/component-overview:record:getting-record-state

    您可以通过操作受状态保护的变量来影响记录状态。

    另外,看看条令记录的建设者。也许用不同的方式创建用户对象会有所帮助:

    $u = new User('User', false);
    

    看起来有点奇怪,但是如果第一个参数没有给出,那么第二个参数就会被忽略。第二个参数告诉对象是否是新的,并使该状态设置为您想要的状态。

    我还将研究条令如何使物体内部水合。

    推荐文章