= sfPropelParanoidBehaviorPlugin plugin = The `sfPropelParanoidBehaviorPlugin` is a symfony plugin that provides a new Propel behavior. If you enable this behavior for one of your model class, deletion of any object of this class is disabled and replaced with the updating of the `deleted_at` column of the object. The plugin also adds a new method `forceDelete` to force object deletion. == Installation == * Install the plugin {{{ symfony plugin-install http://plugins.symfony-project.com/sfPropelParanoidBehaviorPlugin }}} * Enable Propel behavior support in `propel.ini`: {{{ propel.builder.AddBehaviors = true }}} If you have to enable the behavior support, rebuild your model: {{{ symfony propel-build-model }}} * Activate the behavior for one of your Propel model: {{{ // lib/model/Article.php class Article { } sfPropelBehavior::add('Article', array('paranoid')); }}} By default, the plugin will update the `deleted_at` column for this model. You can also specify another column: {{{ sfPropelBehavior::add('Article', array('paranoid' => array('column' => 'deleted_at'))); }}} == Usage == Here are some examples of Propel calls and the generated SQL: {{{ $article = Article::retrieveByPK(1); // SELECT blog_article.ID, blog_article.AUTHOR_ID, blog_article.CREATED_AT, blog_article.DELETED_AT FROM blog_article // WHERE blog_article.ID=1 AND blog_article.DELETED_AT IS NULL $article->delete(); // UPDATE blog_article SET DELETED_AT = '2006-10-21 10:58:56' WHERE blog_article.ID=1 $article->forceDelete(); // DELETE FROM blog_article WHERE blog_article.ID=1 $articles = ArticlePeer::doCount(new Criteria()); // SELECT COUNT(blog_article.ID) FROM blog_article WHERE blog_article.DELETED_AT IS NULL }}} You can also disable the behavior with: {{{ sfPropelParanoidBehavior::disable(); }}} The paranoid behavior will be disabled for the very next request. {{{ $article->delete(); // UPDATE blog_article SET DELETED_AT = '2006-10-21 10:58:56' WHERE blog_article.ID=1 sfPropelParanoidBehavior::disable(); $article->delete(); // DELETE FROM blog_article WHERE blog_article.ID=1 $article->delete(); // UPDATE blog_article SET DELETED_AT = '2006-10-21 10:58:56' WHERE blog_article.ID=1 }}}