25

私はINSERT OR UPDATE IF EXISTS1回の取引でしようとしています。

mysqlでは、通常DUPLICATE KEY("UPDATE ON DUPLICATE KEY") を使用します。さまざまな SQL バリアントとサブクエリを使用して、この問題に対する多くの解決策を認識していますが、Doctrine (PHP ORM) でこれを実装しようとしています。機能が満載なので、これを行うためのDoctrineメソッドがあるようですが、何も見つかりません。このようなことは、何らかの理由で PHP ORM パッケージを使用すると問題になるのでしょうか? それとも、ハックや何らかの手段でこれを達成する方法を知っている Doctrine の専門家はいますか?

4

4 に答える 4

6

私が考えることができる唯一のことは、エンティティが存在する場合は最初にクエリを実行することです。それ以外の場合は、新しいエンティティを作成します。

if(!$entity = Doctrine::getTable('Foo')->find(/*[insert id]*/))
{
   $entity = new Foo();
}
/*do logic here*/
$entity->save();
于 2009-10-20T08:45:14.677 に答える