queencitycodefactory / trash
为 CakePHP 3 ORM 表添加软删除支持。
1.2.1
2023-09-16 01:45 UTC
Requires
- cakephp/orm: ^3.0
Requires (Dev)
- cakephp/cakephp: ^3.8
- phpunit/phpunit: <6.0
This package is not auto-updated.
Last update: 2024-09-15 05:34:19 UTC
README
为 CakePHP 3 表添加 "软" 删除支持。
安装
使用 Composer
composer require queencitycodefactory/trash
然后你需要加载插件。你可以使用以下 shell 命令
bin/cake plugin load QueenCityCodeFactory/Trash
或者手动将下面的语句添加到 Application.php
$this->addPlugin('QueenCityCodeFactory/Trash');
用法
在你的表(s)中添加行为,就像为其他任何行为一样
// in the initialize() method $this->addBehavior('QueenCityCodeFactory/Trash.Trash');
默认情况下,行为将自动检测用于跟踪已删除(软删除)记录的 DATETIME
列,但前提是您使用 deleted
或 trashed
作为名称。否则,您可以在添加行为时自定义它
// in the initialize() method $this->addBehavior('QueenCityCodeFactory/Trash.Trash', [ 'field' => 'deleted_at' ]);
或者在全局范围内,在 bootstrap.php
Configure::write('QueenCityCodeFactory/Trash.field', 'deleted_at');
最后,如果您希望在运行 find()
或 delete()
操作时保留默认的 cake 行为,并且需要 'trash'-ing 功能时显式调用行为,只需禁用事件(s)即可
// in the initialize() method $this->addBehavior('QueenCityCodeFactory/Trash.Trash', [ 'events' => ['Model.beforeFind'] // enables the beforeFind event only, false to disable both ]);
级联删除
如果您希望在删除父项时将相关记录标记为已删除,只需将行为附加到相关表类中,并在表关系中将 'dependent' => true, 'cascadeCallbacks' => true
选项设置为 true 即可。
这适用于项被删除的关系拥有侧的关系。这意味着相关表应该包含外键。
自定义查找器
- onlyTrashed - 帮助获取仅已删除的记录。
- withTrashed - 当默认过滤已删除的记录时,此方法很有用,可以将它们作为某些调用的部分包含在内。
附加功能
- emptyTrash() - 永久删除所有已删除的记录。
- restoreTrash($entity = null) - 恢复一个(或所有)已删除的记录。
- trash($entity) - 与
delete()
类似,但用于软删除(当默认禁用Model.beforeDelete
时很有用)。 - trashAll(array $conditions) - 与
deleteAll()
类似,但用于软删除。
补丁与功能
- 分支
- 修改,修复
- 测试 - 这很重要,所以它不会意外损坏
- 提交 - 不要修改许可证、todo、版本等。(如果您做了更改,请将它们提升到自己的提交中,这样我在拉取时可以忽略它们)
- 拉取请求 - 主题分支的加分项
为了确保您的 PR 被考虑用于上游,您必须遵循 CakePHP 编码标准。
错误与反馈
http://github.com/QueenCityCodeFactory/trash/issues
许可证
版权所有 (c) 2015, Use Muffin,许可协议为 The MIT License。