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

安装: 2

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 35

类型:cakephp-plugin

1.2.1 2023-09-16 01:45 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:34:19 UTC


README

Build Status Coverage Total Downloads License

为 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 列,但前提是您使用 deletedtrashed 作为名称。否则,您可以在添加行为时自定义它

// 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