# 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