我对Doctrine很新,但据我了解,assignIdentifier()
方法应该告诉Doctrine将相关行更新到数据库中而不是插入新的。
我有一个通过工作流构建的对象,因此标识符的id
为null
,直到我调用$object->save();
插入它,这确实有效。< / p>
但是,如果我调用$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();
答案 0 :(得分:2)
就像我知道的那样,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中,并且主要密钥为dealid = $ this-&gt; object-&gt; transid,则Thiw将起作用。
问候语
答案 1 :(得分:0)