我试图在级联中保存一些用户:
$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)