burriko/cake-soft-delete

CakePHP模型的软删除。

dev-master / 2.0.x-dev 2013-08-14 09:10 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:10:24 UTC


README

CakePHP 2.x模型的软删除。透明地将记录标记为已删除,而不是实际删除它们。还将从查找操作中隐藏已删除的记录。

安装

如果你使用composer,只需将以下内容添加到你的require块中。

	"burriko/cake-soft-delete": "2.0.*@dev"

如果不使用,则将此目录的内容克隆/复制到app/Plugins/CakeSoftDelete。

配置

  1. 将以下行添加到你的app/Config/bootstrap.php。

     CakePlugin::load('CakeSoftDelete');
    
  2. 将你的AppModel更改为扩展SoftDeletableModel。你还需要添加适当的App::uses来告诉Cake在哪里加载SoftDeletableModel。基本上,你的AppModel类应该从以下内容开始。

     <?php
    
     App::uses('SoftDeletableModel', 'CakeSoftDelete.Model');
    
     class AppModel extends SoftDeletableModel
    
  3. 在应该进行软删除的模型中添加

     public $actsAs = array('CakeSoftDelete.SoftDeletable');
    
  4. 你的模型数据库模式需要一个字段来作为记录是否被删除的标志。默认情况下,此字段名为'deleted',但可以在行为设置中更改。该字段可以是布尔型或日期时间型(在这种情况下,它将设置为字段被删除的时间)。

用法

现在当你从这个模型中删除记录时,它们应该只是软删除。软删除的记录将不会出现在查找函数的结果中。

要包括已删除记录,请调用模型上的includeDeletedRecords()方法。然后你可以调用excludeDeletedRecords()来再次隐藏它们。

限制

删除将像往常一样级联到相关模型,但HABTM关系除外。这对我来说 hasn't been a problem but is something to be aware of.