/蛋糕PHP4-软删除

此包已废弃,不再维护。未建议替代包。

为蛋糕PHP 4更新的软删除插件

安装量: 104,752

依赖者: 1

建议者: 0

安全: 0

星标: 9

关注者: 3

分支: 5

开放问题: 1

类型:蛋糕PHP插件

1.0.4 2020-08-16 10:27 UTC

This package is auto-updated.

Last update: 2023-11-16 17:55:01 UTC


README

分支

此仓库是从未维护的pgbi/cakephp3-soft-delete分支而来,并更新以避免在蛋糕PHP >= 4.0中使用已弃用的代码。

目的

此蛋糕PHP插件使您能够使模型具有软删除功能。在软删除一个实体时,它实际上并不会从您的数据库中删除。相反,在记录上设置一个deleted时间戳。

要求

此插件是为蛋糕PHP >= 4.0 和 PHP >= 7.2 开发的。

安装

您可以使用composer将此插件安装到您的蛋糕PHP应用程序中。

更新您的composer文件以包含此插件

composer require salines/cakephp4-soft-delete "~1.0"

配置

使模型具有软删除功能

在您的模型Table类上使用SoftDelete特质

// in src/Model/Table/UsersTable.php
...
use SoftDelete\Model\Table\SoftDeleteTrait;

class UsersTable extends Table
{
    use SoftDeleteTrait;
    ...

您的具有软删除功能的模型数据库表应有一个名为deleted的字段,类型为DateTime,默认值为NULL。如果您想自定义此字段,您可以在Table类中声明此字段。

// in src/Model/Table/UsersTable.php
...
use SoftDelete\Model\Table\SoftDeleteTrait;

class UsersTable extends Table
{
    use SoftDeleteTrait;

    protected $softDeleteField = 'deleted_date';
    ...

使用

软删除记录

deletedeleteAll函数现在将通过将deleted字段填充为删除日期来软删除记录。

// in src/Model/Table/UsersTable.php
$this->delete($user); // $user entity is now soft deleted if UsersTable uses SoftDeleteTrait.

恢复软删除的记录

要恢复一个软删除的实体到活动状态,请使用restore方法

// in src/Model/Table/UsersTable.php
// Let's suppose $user #1 is soft deleted.
$user = $this->Users->find('all', ['withDeleted'])->where('id', 1)->first();
$this->restore($user); // $user #1 is now restored.

查找记录

findget或动态查找器(如findById)将仅返回非软删除的记录。要同时返回软删除的记录,$options必须包含'withDeleted'。示例

// in src/Model/Table/UsersTable.php
$nonSoftDeletedRecords = $this->find('all');
$allRecords            = $this->find('all', ['withDeleted']);

硬删除记录

要硬删除单个实体

// in src/Model/Table/UsersTable.php
$user = $this->get($userId);
$success = $this->hardDelete($user);

要批量硬删除在给定日期之前软删除的记录,您可以使用hardDeleteAll($date)

// in src/Model/Table/UsersTable.php
$date = new \DateTime('some date');
$affectedRowsCount = $this->hardDeleteAll($date);

软删除和关联

软删除插件正确处理关联。

  1. 软删除将像往常一样级联到相关模型。如果相关模型也使用SoftDelete特质,它们将被软删除。
  2. 软删除的记录将被排除在计数缓存之外。