uygulanması "güncelleştirme varsa"

2 Cevap php

Ben tek bir işlemle INSERT OR UPDATE IF EXISTS çalışıyorum.

in mysql, ben genellikle DUPLICATE KEY kullanmak istiyorsunuz ("YİNELENEN KEY UPDATE".) Ben çeşitli SQL varyantları ve alt sorguları kullanarak bu problem için birçok çözüm farkında değilim, ama 'Doktrini (PHP ORM) bu uygulamaya çalışıyorum. O kadar özellik dolu beri bu iş için Doktrin yöntemler var gibi gözüküyor, ama ben bir şey bulamıyorum. Bu tür bir şey nedense PHP ORM paketlerini kullanarak bir sorun var mı? Veya herhangi Doktrin uzmanlar kesmek veya herhangi bir yoldan bunu başarmak için nasıl biliyor musunuz?

2 Cevap

Aklıma tek şey, aksi takdirde yeni bir varlık yaratmak varsa varlık için ilk sorgu etmektir.

if(!$entity = Doctrine::getTable('Foo')->find(/*[insert id]*/))
{
   $entity = new Foo();
}
/*do logic here*/
$entity->save();

Öğreti destekleri REPLACE INTO replace() yöntemi kullanılarak. Bu tam ON DUPLICATE KEY UPDATE aradığınız gibi çalışmak gerekir.

Dokümanlar: Replacing Records