小编Fab*_*Fab的帖子

Doctrine 1.2保存记录关系UPDATE而不是INSERT

我试图在级联中保存一些用户:

 $user = new User();
 $user->name = 'xxx';
 $user->location->id = 1;
 $user->location->name = 'yyy';
 $user->save;

 $user2 = new User();
 $user2->name = 'zzz';
 $user2->location->id = 1;
 $user2->location->name = 'yyy';
 $user2->location->zip = '123456';
 $user2->save;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望Doctrine足够聪明并更新位置1,因为我正在更改id 1的内容,但我所拥有的是另一个插入.我尝试在User中使用preSave()方法解决方法:

public function preSave( Doctrine_Event $event )
{
    $invoker = $event->getInvoker();
    if ( /...decide to UPDATE the record .../ )
    {
        $invoker->state( Doctrine_Record::STATE_DIRTY );
    }
    else
    {
        $invoker->state( Doctrine_Record::STATE_CLEAN );
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当doctrine尝试UPDATE时它没有标识符并产生这个错误:

Doctrine_Connection_Mysql_Exception: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of …
Run Code Online (Sandbox Code Playgroud)

php orm doctrine save doctrine-1.2

2
推荐指数
1
解决办法
3038
查看次数

标签 统计

doctrine ×1

doctrine-1.2 ×1

orm ×1

php ×1

save ×1