Это расширение реализует возможности "Soft delete" для Yii2.
- Добавить репозиторий в
composer.json
"repositories":[
{
"type": "vcs",
"url": "https://github.com/danila718/yii2-soft-delete.git"
}
]
- Запустить:
composer require danila718/yii2-soft-delete:dev-master
В классе модели yii\db\ActiveRecord
:
- Добавить столбец
deleted_at
(int) и индекс для него в БД - Добавить трейт
use SoftDelete;
- Добавить поведение
SoftDeleteBehavior
в метод behaviors
class Model extends \yii\db\ActiveRecord
{
use SoftDelete;
public function behaviors()
{
return [
SoftDeleteBehavior::class,
];
/**
* В варианте ниже поведение будет зазполнять поля created_at, updated_at, deleted_at,
* т.к. SoftDeleteBehavior расширен от TimestampBehavior и при флаге withTimestamp = true
* будет также запускать методы родителя
*/
return [
[
'class' => SoftDeleteBehavior::class,
'withTimestamp' => true,
]
];
}
}
- метод find() возвращает объект
softDelete\ActiveQuery
- новые методы
findWithTrashed()
,findOnlyTrashed()
,findOneWithTrashed()
,findAllWithTrashed()
,findOneOnlyTrashed()
,findAllOnlyTrashed()
,isTrashed()
- добавлен приватный флаг
private $forceDelete = false;
- метод
delete()
по умолчанию выполнит soft delete, если$forceDelete == false
, добавлены методыsoftDelete()
,restore()
,forceDelete()
- реальное удаление
- новые методы
withTrashed()
,withoutTrashed()
,onlyTrashed()