Один из вариантов - использовать метод preDelete, чтобы просто пропустить метод delete все вместе.
Пример:
public function preDelete(Doctrine_Event $event)
{
$event->skipOperation();
}
Вы должны быть в состоянии сделать это в своих расширенных классах Doctrine_Record илиВ качестве альтернативы со слушателем.Слушатель может быть полезен в тех случаях, когда вы хотите, чтобы какая-то часть вашего приложения имела возможность удалять записи (например, раздел администратора или код на стороне клиента).
При использовании метода прослушивания вы создаете прослушиватель с помощью вышеуказанного метода preDelete и регистрируете его в своей таблице следующим образом:
$userTable = Doctrine_Core::getTable('User');
$userTable->addRecordListener(new HydrationListener());
Если прослушиватель не зарегистрирован, вы все равно сможете удалитьзаписей.Если прослушиватель зарегистрирован, ваши удаления не будут сохранены в базе данных.
Более подробную информацию об этом методе можно найти здесь: http://www.doctrine -project.org / projects / orm / 1.2 / docs / manual/ EVENT-слушателей / ан