松饼 / 垃圾
为 CakePHP ORM 表添加软删除支持。
4.1.0
2024-08-29 18:49 UTC
Requires
- php: >=8.1
- cakephp/orm: ^5.0.0
Requires (Dev)
- cakephp/cakephp: ^5.0.0
- cakephp/cakephp-codesniffer: ^5.0
- phpunit/phpunit: ^10.1.0
README
为 CakePHP 表添加“软”删除支持。
安装
使用 Composer
composer require muffin/trash
然后你需要加载插件。你可以使用 shell 命令
bin/cake plugin load Muffin/Trash
用法
在你的表(s)中,添加行为,就像添加任何其他行为一样
// in the initialize() method $this->addBehavior('Muffin/Trash.Trash');
默认情况下,该行为将自动检测用于跟踪已删除(软删除)记录的 DATETIME
列,但前提是你使用的是 deleted
或 trashed
作为名称。否则,你可以在添加行为时自定义它
// 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。