0

我想在我的项目中实现软删除。找不到可靠的文章。以下是我得到的唯一东西..

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 时,页面不显示任何数据,如果我排除它,软删除将不起作用。如果您有更具体的资源来实现软删除,那也会有所帮助,任何帮助将不胜感激。谢谢!

4

1 回答 1

0

首先,检查您的行为文件夹中的拼写错误。你写过

/app/Model/Behavour 

什么时候应该

/app/Model/Behavior

接下来,SoftDelete您使用的版本可能已过时,并且可能存在已在最新版本中修复的错误。

您应该CakeDC/utils使用作曲家安装:

"require": {
    "cakedc/utils": "master"
}

CakePlugin::loadAll()当您选择作为插件安装时需要,但如果您将单个类下载到app/Model/Behavior文件夹中则不需要。

另外,不要忘记在数据库表中创建两个字段:deleted TINYINT(1)deleted_date DATETIME.

请记住通过设置在您的开发服务器上启用调试

Configure::write('debug', 2);

app/Config/core.php.

于 2015-12-11T14:44:16.287 回答