1. Go to this page and download the library: Download yii1tech/ar-softdelete library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yii1tech / ar-softdelete example snippets
use CActiveRecord;
use yii1tech\ar\softdelete\SoftDeleteBehavior;
class Item extends CActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
'is_deleted' => true,
],
],
];
}
}
$id = 17;
$item = Item::model()->findByPk($id);
$item->softDelete(); // mark record as "deleted"
$item = Item::model()->findByPk($id);
var_dump($item->is_deleted); // outputs "true"
$item->delete(); // perform actual deleting of the record
$item = Item::model()->findByPk($id);
var_dump($item); // outputs "null"
use CActiveRecord;
use yii1tech\ar\softdelete\SoftDeleteBehavior;
class Item extends CActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
'is_deleted' => true
],
'replaceRegularDelete' => true // mutate native `delete()` method
],
];
}
}
$id = 17;
$item = Item::model()->findByPk($id);
$item->delete(); // no record removal, mark record as "deleted" instead
$item = Item::model()->findByPk($id);
var_dump($item->is_deleted); // outputs "true"
// returns only not "deleted" records
$notDeletedItems = Item::model()
->findAll('is_deleted = 0');
// returns "deleted" records
$deletedItems = Item::model()
->findAll('is_deleted = 1');
// Find all "deleted" records:
$deletedItems = Item::model()->deleted()->findAll();
// Find all "active" records:
$notDeletedItems = Item::model()->notDeleted()->findAll();
// Filter records by "soft" deleted criteria:
$items = Item::model()
->filterDeleted(Yii::app()->request->getParam('filter_deleted'))
->findAll();
use CActiveRecord;
use yii1tech\ar\softdelete\SoftDeleteBehavior;
class Item extends CActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
'statusId' => 'deleted',
],
'deletedCondition' => [
'statusId' => 'deleted',
],
'notDeletedCondition' => [
'statusId' => 'active',
],
],
];
}
// ...
}
use CActiveRecord;
use yii1tech\ar\softdelete\SoftDeleteBehavior;
class Item extends CActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
'is_deleted' => true,
],
'autoApplyNotDeletedCondition' => true,
],
];
}
// ...
}
$notDeletedItems = Item::model()->findAll(); // returns only not "deleted" records
$allItems = Item::find()
->deleted() // applies "deleted" condition, preventing default one
->findAll(); // returns "deleted" records
$allItems = Item::find()
->filterDeleted('all') // filter all records, preventing default "not deleted" condition
->all(); // returns all records
use CActiveRecord;
use yii1tech\ar\softdelete\SoftDeleteBehavior;
class User extends CActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
'is_deleted' => true
],
'allowDeleteCallback' => function ($user) {
return $user->last_login_date === null; // allow to delete user, if he has never logged in
}
],
];
}
}
$user = User::model()->find('last_login_date IS NULL');
$user->softDelete(); // removes the record!!!
$user = User::find()->find('last_login_date IS NOT NULL');
$user->softDelete(); // marks record as "deleted"
// if there is a foreign key reference :
$customer = Customer::model()->findByPk(15);
var_dump(count($customer->purchases)); // outputs; "1"
$customer->safeDelete(); // performs "soft" delete!
var_dump($customer->isDeleted) // outputs: "true"
// if there is NO foreign key reference :
$customer = Customer::model()->findByPk(53);
var_dump(count($customer->purchases)); // outputs; "0"
$customer->safeDelete(); // performs actual delete!
$customer = Customer::model()->findByPk(53);
var_dump($customer); // outputs: "null"
$id = 17;
$item = Item::model()->findByPk($id);
$item->softDelete(); // mark record as "deleted"
$item = Item::model()->findByPk($id);
$item->restore(); // restore record
var_dump($item->is_deleted); // outputs "false"
use CActiveRecord;
use yii1tech\ar\softdelete\SoftDeleteBehavior;
class Item extends CActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
// ...
],
];
}
public function beforeSoftDelete(): bool
{
$this->deleted_at = time(); // log the deletion date
return true;
}
public function beforeRestore(): bool
{
return $this->deleted_at > (time() - 3600); // allow restoration only for the records, being deleted during last hour
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.