Soft delete behavior for Yii2
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
tests/unit
.gitattributes
.gitignore
.scrutinizer.yml
.travis.yml
CONTRIBUTING.md
LICENSE.md
README.md
composer.json
composer.lock
phpunit.xml.dist

README.md

Yii2 Soft Delete

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

Soft delete behavior for Yii2.

Installation

The preferred way to install this extension is through composer.

Either run

$ composer require cornernote/yii2-softdelete "*"

or add

"cornernote/yii2-softdelete": "*"

to the require section of your composer.json file.

Usage

In your ActiveRecord class:

public function behaviors() {
    return [
        \cornernote\softdelete\SoftDeleteBehavior::className(),
        // or
        [
            'class' => \cornernote\softdelete\SoftDeleteBehavior::className(),
            'attribute' => 'deleted_time',
            'value' => new \yii\db\Expression('NOW()'), // for sqlite use - new \yii\db\Expression("date('now')")
        ],
    ];
}

then you can use explicitly $model->softDelete(), $model->hardDelete() and $model->unDelete() (for softly deleted models). Each of these methods return boolean result. Also $model->softDelete() calls indirectly from $model->delete(), which always returns false.

In your ActiveQuery class:

public function behaviors() {
    return [
        \cornernote\softdelete\SoftDeleteQueryBehavior::className(),
        // or
        [
            'class' => \cornernote\softdelete\SoftDeleteQueryBehavior::className(),
            'attribute' => 'deleted_time',
        ],
    ];
}