fusic / reincarnation
CakePHP 重生
3.0.0
2023-11-14 01:42 UTC
Requires
- php: >=8.1.0
- cakephp/cakephp: ~5.0
Requires (Dev)
README
描述
用于 CakePHP 5.x 的软删除插件。
要求
- PHP >= 8.1.*
- CakePHP >= 5.*
安装
$ composer install
用法
创建用户表。
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'); } }