我想在我的项目中实现软删除。找不到可靠的书面报告。以下是我唯一得到的东西。。
http://www.logicsart.com/cakephp/soft-delete-in-cakephp/
无论如何,我在数据库中添加了相应的列我试图通过在我的AppModel 中添加以下代码来实现它
public function exists($id = null) {
if ($this->Behaviors->attached('SoftDelete')) {
return $this->existsAndNotDeleted($id);
} else {
return parent::exists($id);
}
}
public function delete($id = null, $cascade = true) {
$result = parent::delete($id, $cascade);
if ($result === false && $this->Behaviors->enabled('SoftDelete')) {
return $this->field('deleted', array('deleted' => 1));
}
return $result;
}
下面,在我的bootstrap.php
中
CakePlugin::loadAll();
下面是我的模型
public $actsAs = array('SoftDelete');
我还将SoftDeleteBehavior.php
包含在app/Model/Behavour文件夹中。
我面临的问题是,当我在模型中包含$actsAs时,页面不会显示任何数据,如果我排除了它,软删除就无法工作。如果你有一个更具体的来源来实现软删除,那也会有所帮助,任何帮助都将不胜感激。谢谢
首先,检查行为文件夹中的拼写错误。你已经写了
/app/Model/Behavour
什么时候应该是
/app/Model/Behavior
接下来,您使用的SoftDelete
版本可能已经过时,并且可能存在在最近版本中修复的错误。
您应该安装带有composer:的CakeDC/utils
"require": {
"cakedc/utils": "master"
}
当您选择作为插件安装时,需要CakePlugin::loadAll()
,但如果您将单个类下载到app/Model/Behavior
文件夹中,则不需要。
另外,不要忘记在数据库表中创建两个字段:deleted
TINYINT(1)
和deleted_date
DATETIME
。
记住通过设置在开发服务器上启用调试
Configure::write('debug', 2);
在CCD_ 11中。