gpt4 book ai didi

php - 使用 allocateIdentifier() 更新对象而不是使用 Doctrine 插入

转载 作者:行者123 更新时间:2023-11-29 09:18:29 24 4
gpt4 key购买 nike

我对 Doctrine 还很陌生,但据我了解,assignIdentifier() 方法应该告诉 Doctrine 将相关行更新到数据库中,而不是插入新行。

我有一个通过工作流程构建的对象,因此标识符的 idnull,直到我调用 $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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com