松饼/垃圾

为 CakePHP ORM 表添加软删除支持。

安装 804,731

依赖项: 11

建议者: 0

安全: 0

星标: 85

关注者: 11

分支: 35

类型:cakephp-plugin

4.1.0 2024-08-29 18:49 UTC

This package is auto-updated.

Last update: 2024-08-29 18:50:42 UTC


README

Build Status Coverage Total Downloads License

为 CakePHP 表添加“软”删除支持。

安装

使用 Composer

composer require muffin/trash

然后你需要加载插件。你可以使用 shell 命令

bin/cake plugin load Muffin/Trash

用法

在你的表(s)中,添加行为,就像添加任何其他行为一样

// in the initialize() method
$this->addBehavior('Muffin/Trash.Trash');

默认情况下,该行为将自动检测用于跟踪已删除(软删除)记录的 DATETIME 列,但前提是你使用的是 deletedtrashed 作为名称。否则,你可以在添加行为时自定义它

// in the initialize() method
$this->addBehavior('Muffin/Trash.Trash', [
    'field' => 'deleted_at'
]);

或,在全局级别,在 bootstrap.php

Configure::write('Muffin/Trash.field', 'deleted_at');

最后,如果你想保持默认的 cake 行为,当运行 find()delete() 操作时,并显式调用行为以获得'trash'-ing 功能,只需禁用事件(s)

// in the initialize() method
$this->addBehavior('Muffin/Trash.Trash', [
    'events' => ['Model.beforeFind'] // enables the beforeFind event only, false to disable both
]);

或使用清除选项

$table->delete($entity, ['purge' => true]);

级联删除

如果你想在删除父项时将相关记录标记为已删除,只需将行为附加到相关表类,并在表关系中将 'dependent' => true, 'cascadeCallbacks' => true 选项设置为 true

这适用于关系中的拥有方被删除的项目。这意味着相关表应包含外键。

如果不想级联删除

// in the initialize() method
$this->addBehavior('Muffin/Trash.Trash', [
    'cascadeOnTrash' => false,
]);

自定义查找器

  • onlyTrashed - 帮助获取仅那些已删除的记录。
  • withTrashed - 当默认过滤掉已删除的记录时,此方法很有用,可以将它们作为某些调用的一部分包括在内。

附加

  • emptyTrash() - 永久删除所有已删除的记录。
  • restoreTrash($entity = null, array $options = []) - 恢复一个(或所有)已删除的记录。
  • cascadingRestoreTrash($entity = null, array $options = []) - 恢复一个(或所有)已删除的记录,包括依赖关联的记录。
  • trash($entity, array $options = []) - 与 delete() 类似,但用于软删除(当默认禁用 Model.beforeDelete 时很有用)。
  • trashAll(array $conditions) - 与 deleteAll() 类似,但用于软删除。

补丁 & 功能

  • 分支
  • 修改,修复
  • 测试 - 这很重要,所以它不会意外地损坏
  • 提交 - 不要修改许可证,todo,版本等。(如果你改变了任何,将它们提升到自己的提交中,这样我拉取时可以忽略它们)
  • 拉取请求 - 主题分支的额外积分

为了确保您的 PR 被考虑用于上游,您必须遵循 CakePHP 编码标准。

错误 & 反馈

http://github.com/usemuffin/trash/issues

许可证

版权(c)2015-现在,Use Muffin 并许可于 The MIT License