1

我正在从自定义 PDO 查询中加载大量User相关Group对象(使用 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这种情况下可以更改)。然而,Doctrine 试图插入并且违反了键约束。

我知道错误被抛出,但是我希望能够更新该some_field列(也许最重要的是:NOT THE GROUP)。使用上述预加载,这一切都可能吗?

4

1 回答 1

1

好吧,您正在创建新对象,因此教义试图保留它们。

阅读学说的记录状态:http ://www.doctrine-project.org/documentation/manual/1_2/en/component-overview:record:getting-record-state

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

另外,看看 Doctrine_Record 的构造函数。也许以不同的方式创建用户对象会有所帮助:

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

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

我还将研究教义如何在内部水合物体。

于 2010-07-24T15:36:11.410 回答