PHPackages                             andrecalistro/cakephp3-soft-delete - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. andrecalistro/cakephp3-soft-delete

ActiveCakephp-plugin

andrecalistro/cakephp3-soft-delete
==================================

SoftDelete plugin for CakePHP

1.4.0(7y ago)27.8k1MITPHPPHP &gt;=5.6

Since Feb 1Pushed 7y ago3 watchersCompare

[ Source](https://github.com/andrecalistro/cakephp3-soft-delete)[ Packagist](https://packagist.org/packages/andrecalistro/cakephp3-soft-delete)[ Docs](https://github.com/pgbi/cakephp3-soft-delete)[ RSS](/packages/andrecalistro-cakephp3-soft-delete/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (3)Versions (13)Used By (0)

CakeSoftDelete plugin for CakePHP
=================================

[](#cakesoftdelete-plugin-for-cakephp)

[![Build status](https://camo.githubusercontent.com/de40fb6b5f5eacfc5b4909c5b34d540813254f8ebb9e34527e47a881dee61135/68747470733a2f2f6170692e7472617669732d63692e6f72672f504742492f63616b65706870332d736f66742d64656c6574652e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/PGBI/cakephp3-soft-delete)

Purpose
-------

[](#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
------------

[](#requirements)

This plugins has been developed for cakephp 3.x.

Installation
------------

[](#installation)

You can install this plugin into your CakePHP application using [composer](http://getcomposer.org).

Update your composer file to include this plugin:

```
composer require pgbi/cakephp3-soft-delete "~1.0"

```

Configuration
-------------

[](#configuration)

### Load the plugin:

[](#load-the-plugin)

```
// In /config/bootstrap.php
Plugin::load('SoftDelete');

```

### Make a model soft deleteable:

[](#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
---

[](#use)

### Soft deleting records

[](#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

[](#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

[](#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

[](#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 &amp; associations
--------------------------------

[](#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.

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity22

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 63.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~131 days

Recently: every ~310 days

Total

11

Last Release

2805d ago

Major Versions

0.1.2 → 1.0.02015-03-22

PHP version history (2 changes)0.1.0PHP &gt;=5.4

1.4.0PHP &gt;=5.6

### Community

Maintainers

![](https://www.gravatar.com/avatar/2fd90c7d082126e62da6015848f8530acc2f16dd36158360b710052589824935?d=identicon)[andrecalistro](/maintainers/andrecalistro)

---

Top Contributors

[![PGBI](https://avatars.githubusercontent.com/u/6191583?v=4)](https://github.com/PGBI "PGBI (23 commits)")[![davidyell](https://avatars.githubusercontent.com/u/49889?v=4)](https://github.com/davidyell "davidyell (7 commits)")[![andrecalistro](https://avatars.githubusercontent.com/u/20094872?v=4)](https://github.com/andrecalistro "andrecalistro (4 commits)")[![gauravmak](https://avatars.githubusercontent.com/u/11887260?v=4)](https://github.com/gauravmak "gauravmak (1 commits)")[![ravage84](https://avatars.githubusercontent.com/u/625761?v=4)](https://github.com/ravage84 "ravage84 (1 commits)")

---

Tags

plugincakephpdeletesoftdeletablecakephp 3

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/andrecalistro-cakephp3-soft-delete/health.svg)

```
[![Health](https://phpackages.com/badges/andrecalistro-cakephp3-soft-delete/health.svg)](https://phpackages.com/packages/andrecalistro-cakephp3-soft-delete)
```

###  Alternatives

[pgbi/cakephp3-soft-delete

SoftDelete plugin for CakePHP

87291.9k](/packages/pgbi-cakephp3-soft-delete)[dereuromark/cakephp-tinyauth

A CakePHP plugin to handle user authentication and authorization the easy way.

129228.6k10](/packages/dereuromark-cakephp-tinyauth)[dereuromark/cakephp-databaselog

A CakePHP plugin for storing and viewing application logs in the database

44165.0k2](/packages/dereuromark-cakephp-databaselog)[ivanamat/cakephp3-aclmanager

AclManager plugin for CakePHP 3.x

2715.2k](/packages/ivanamat-cakephp3-aclmanager)[dereuromark/cakephp-translate

A CakePHP plugin for managing translations

1710.4k](/packages/dereuromark-cakephp-translate)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
