承接 salines/cakephp4-soft-delete 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

salines/cakephp4-soft-delete

最新稳定版本:1.0.4

Composer 安装命令:

composer require salines/cakephp4-soft-delete

包简介

SoftDelete plugin updated for CakePHP 4

README 文档

README

Fork

This repo is forked from not maintained pgbi/cakephp3-soft-delete and updated to avoid deprecated code in CakePHP >=4.0

Purpose

This Cakephp plugin enables you to make your models soft deletable. When soft deleting an entity, it is not actually removed from your database. Instead, a deleted timestamp is set on the record.

Requirements

This plugins has been developed for cakephp >=4.0 and PHP >=7.2

Installation

You can install this plugin into your CakePHP application using composer.

Update your composer file to include this plugin:

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

Configuration

Make a model soft deleteable:

Use the SoftDelete trait on your model Table class:

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

class UsersTable extends Table
{
    use SoftDeleteTrait;
    ...

Your soft deletable model database table should have a field called deleted of type DateTime with NULL as default value. If you want to customise this field you can declare the field in your Table class.

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

class UsersTable extends Table
{
    use SoftDeleteTrait;

    protected $softDeleteField = 'deleted_date';
    ...

Use

Soft deleting records

delete and deleteAll functions will now soft delete records by populating deleted field with the date of the deletion.

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

Restoring Soft deleted records

To restore a soft deleted entity into an active state, use the restore method:

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

Finding records

find, get or dynamic finders (such as findById) will only return non soft deleted records. To also return soft deleted records, $options must contain 'withDeleted'. Example:

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

Hard deleting records

To hard delete a single entity:

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

To mass hard delete records that were soft deleted before a given date, you can use hardDeleteAll($date):

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

Soft deleting & associations

Associations are correctly handled by SoftDelete plugin.

  1. Soft deletion will be cascaded to related models as usual. If related models also use SoftDelete Trait, they will be soft deleted.
  2. Soft deletes records will be excluded from counter caches.

统计信息

  • 总下载量: 154.56k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 3
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 未知

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固