sea*_*ans 24 php sql orm doctrine
我想INSERT OR UPDATE IF EXISTS
在一次交易中.
在mysql中,我通常会使用DUPLICATE KEY
("UPDATE ON DUPLICATE KEY".)我知道使用各种SQL变体和子查询解决这个问题很多,但我正在尝试在Doctrine(PHP ORM)中实现它.似乎会有Doctrine方法来做这个,因为它是如此功能丰富,但我找不到任何东西.出于某种原因,使用PHP ORM包这是一个问题吗?或者,任何Doctrine专家都知道如何通过黑客或任何方式实现这一目标?
我唯一能想到的是首先查询实体是否存在,否则创建新实体.
if(!$entity = Doctrine::getTable('Foo')->find(/*[insert id]*/))
{
$entity = new Foo();
}
/*do logic here*/
$entity->save();
Run Code Online (Sandbox Code Playgroud)
根据https://www.vivait.co.uk/labs/updating-entities-when-an-insert-has-a-duplicate-key-in-doctrine的说明,可以使用来实现$entityManager->merge()
。
$entity = new Table();
$entity->setId(1);
$entity->setValue('TEST');
$entityManager->merge($entity);
$entityManager->flush();
Run Code Online (Sandbox Code Playgroud)
学说支持REPLACE INTO
使用该replace()
方法。这应该与ON DUPLICATE KEY UPDATE
您正在寻找的完全一样。
文档:替换记录
归档时间: |
|
查看次数: |
22014 次 |
最近记录: |