我对 Doctrine 还很陌生,但据我了解,assignIdentifier()
方法应该告诉 Doctrine 将相关行更新到数据库中,而不是插入新行。
我有一个通过工作流程构建的对象,因此标识符的 id
为 null
,直到我调用 $object->save( );
插入它,这确实有效。
如果我调用 $object->assignIdentifier($newobj->id);
然后 $object->save();
它什么也不做 - 它确实不插入新行,也不更新旧行。
如果某个条件成立,我想从数据库中提取另一条记录并更新该行,而不是插入新记录。
我理解有问题吗?
一些代码来说明:
if($this->object->payments > 0) {
$older_payment = Doctrine_Query::create()
->from('OldPaid p')
->where('p.dealid = ?', $this->object->transid)
->fetchOne()
;
$this->object->assignIdentifier($older_payment->id);
}
$this->object->save();
最佳答案
正如我所知道的,save() 不会使用 ID 自动增量来更新现有记录。 我在使用 Doctrine 1.2 时也遇到同样的问题。
我使用这个的一个想法,我发现的唯一解决方法:
$query = Doctrine_Query::create()->update('OldPaid');
$query->set($yourFieldname, '?', $yourValue);
$query->addwhere('p.dealid = ?', $this->object->transid);
$query->execute();
当一条记录位于 DN 中且primaryKey dealid = $this->object->transid 时,Thiw 将起作用。
问候我
关于php - 使用 allocateIdentifier() 更新对象而不是使用 Doctrine 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3156338/