Ben Zed yol gitmek istiyorum düşünüyorum, ama bütünlüğü için:
Yumuşak silme davranışı için silme için olay dinleyicisi yöntemi (seçin) içerir:
if ( ! $query->contains($field)) {
// do the magic stuff to covert the query to respect softdelete
}
Bu açıkça sorguda alan söz varsa, o sorguya dönüşüm uygulamak anlamına gelir.
Yani, yapmanız eğer:
$q = Doctrine_Query::create()
->delete('Table t')
->where('t.id = ? AND t.deleted != 2 ', 1);
Bu yumuşak silme şeyler geçerli olmayacak ve aslında kaydını silecektir. Eğer t.deleted ile her şeyi yapabilir unutmayın, ben her zaman doğru olacak bir şey yaptık. Ad ('t.') Çalışması için çok önemlidir.
Bu hile Ben normalde önce kullandım nerede, hangi de seçtiği için çalışıyor.
Ama dediğim gibi, ben bunu yapmak çok güzel düşünüyorum:
$old_dqlc = Doctrine_Manager::getInstance()->getAttribute(Doctrine::ATTR_USE_DQL_CALLBACKS);
Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_USE_DQL_CALLBACKS, false);
$record->delete();
Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_USE_DQL_CALLBACKS, $old_dqlc);
Özellikle, hala yerine el sorgu oluşturmak zorunda kalmadan daha delete () yöntemini kullanabilirsiniz. Sorgu yöntemi için bir artı kayda bağlı diğer davranışlar varsa, onlar hala saygı olmasıdır.