fusic/reincarnation

CakePHP Reincarnation

Installs: 140 905

Dependents: 0

Suggesters: 0

Security: 0

Stars: 3

Watchers: 15

Forks: 3

Open Issues: 1

Type:cakephp-plugin

3.0.0 2023-11-14 01:42 UTC

This package is auto-updated.

Last update: 2024-04-16 08:20:55 UTC


README

Description

Soft delete plugin for CakePHP 5.x.

Requirements

  • PHP >= 8.1.*
  • CakePHP >= 5.*

Installation

$ composer install

Usage

Create users table.

CREATE TABLE users
(
  id serial NOT NULL,
  username text,
  password text,
  created timestamp without time zone,
  modified timestamp without time zone,
  delete_flg boolean DEFAULT false,
  deleted timestamp with time zone,
  CONSTRAINT users_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);

UsersTable.php

class UsersTable extends Table
{
    public function initialize(array $config)
    {
        // Case 1
        // default
        //   table field name
        //     boolean:deleted
        //     timestamp:delete_date
        $this->addBehavior('Reincarnation.SoftDelete');

        // Case 2
        // field name custom
        //   table field name
        //     boolean:delete_flg
        //     timestamp:deleted
        $this->addBehavior('Reincarnation.SoftDelete', ['boolean' => 'delete_flg', 'timestamp' => 'deleted']);

        // Case 3
        // boolean only
        //   table field name
        //     boolean:delete_flg
        //     timestamp:none
        $this->addBehavior('Reincarnation.SoftDelete', ['boolean' => 'delete_flg', 'timestamp' => false]);

        // Case 4
        // timestamp only
        //   table field name
        //     boolean:none
        //     timestamp:deleted
        $this->addBehavior('Reincarnation.SoftDelete', ['boolean' => false, 'timestamp' => 'deleted']);
    }
}

UsersController.php

class UsersController extends AppController
{
    public function delete($id = null)
    {
        $this->request->allowMethod(['post', 'delete']);
        $user = $this->Users->get($id);
        if ($this->Users->softDelete($user)) {
        //第二引数がtrueの場合、Entityのassociate先もあわせて削除します
        //if ($this->Users->softDelete($user, true)) {
            $this->Flash->success(__('The data has been deleted.'));
        } else {
            $this->Flash->error(__('The data could not be deleted. Please, try again.'));
        }
        return $this->redirect('action' => 'index');
    }
}