DoctrineのDQLコールバック関連

via.

DoctrineのSoftDeleteが言うこと聞いてくれない。deleted_atが入ってるのに普通に表示される。

Masashi Sekine on Twitter: "DoctrineのSoftDeleteが言うこと聞いてくれない。deleted_atが入ってるのに普通に表示される。"

原因調べたらDoctrineの設定ですね。

config/ProjectConfiguration.class.phpの中に

<?php
class ProjectConfiguration extends sfProjectConfiguration
{
  # このメソッドを追加
  public function configureDoctrine(Doctrine_Manager $manager)
  {
    $manager->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true);
  }
}

configureDoctrine()メソッドを追加すれば動くようになります。

デフォルトでfalseなのは、

preDqlDelete() などの DQL 発行時に実行されるメソッドは、パフォーマンスを考慮してデフォルトで無効に設定されています。

symfony 1.x legacy website

こういった理由からです。