【问题标题】:SoftdeleteBehavior but still getting deleted instancesSoftdeleteBehavior 但仍会删除实例
【发布时间】:2014-08-15 08:25:21
【问题描述】:

我正在尝试使用 cakeDC/utils SoftdeleteBehavior,以允许用户恢复已删除的模型实例。

到目前为止,软删除工作正常,但我也希望能够查看 已删除的模型实例。

我尝试使用 findById($id) 查找实例,但它调用了检查 deleted = true 的行为的 beforeFind 方法,因此不返回该实例。

有没有其他方法可以在不直接使用 SQL 的情况下检索它?

编辑:我正在使用 cakephp-2.4.9

【问题讨论】:

  • 请务必提及您的确切 CakePHP 版本!

标签: cakephp cakedc


【解决方案1】:

一种方法是为特定的 find 调用临时 disable the behavior,例如

$enabled = $YourModel->Behaviors->enabled('SoftDelete');
if($enabled) {
    $YourModel->Behaviors->disable('SoftDelete');
}

$result = $YourModel->findById($id);

if($enabled) {
    $YourModel->Behaviors->enable('SoftDelete');
}

通过查看代码,还应该可以通过其标志状态显式检索记录,即类似

$YourModel->findByIdAndDeleted($id, true);

也可以。但是,这是否适用当然取决于您的具体用例。

【讨论】:

  • 第二种方法不适用,因为我想同时找到 - 已删除和未删除 - 都可以找到。暂时禁用该行为虽然有效,但我不知道它有效:)。
猜你喜欢
  • 2014-06-04
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2018-11-14
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多