我正在使用软删除 - CakeDC 实用程序包的行为。
(https://github.com/CakeDC/utils(
现在的问题是:我想检查控制器中是否有软(删除(的内容,如下所示:
<?php
if ($this->User->delete($id)) {
$this->Session->setFlash(__('user has been deleted'));
} else {
$this->Session->setFlash(__('user has not been deleted'));
}
?>
不幸的是,我得到的结果是错误的。 意味着如果用户被(软(删除,我将收到"用户尚未被删除"消息,反之亦然。
我知道 Cake 如何处理此请求,并且之前的 Delete 钩子必须返回 false,以停止(硬(删除数据。 但是在 GitHub 上提到这个问题,现在应该可以解决这个问题。我是唯一一个这不起作用的人吗?
除了简单地否定条件之外,还有其他解决方法吗?(不想那样做,就是不对(
提前问候和感谢!
纳赫里
我为此使用的解决方案是从@mark链接到的线程中复制一半和一半写入的。
将其添加到您的AppModel
/**
* Override the delete() model method so that we can account for the
* SoftDelete behaviours return
*
* @param int $id
* @param bool $cascade
* @return bool
*/
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;
}
请记住,使用此代码段,它使用行为default
设置。这就是为什么我使用'deleted' => 1
如果您以不同的方式命名您的字段,那么您将想要更改它。