return;
}
- if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('deleted_at') === null) {
- $this->addColumn(self::TABLE_NAME, 'deleted_at', $this->timestamp()->null()->defaultValue(null)->comment('Дата мягкого удаления'));
+ if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('active') === null) {
+ $this->addColumn(
+ self::TABLE_NAME,
+ 'active',
+ $this->tinyInteger()->notNull()->defaultValue(1)->comment('Активность')
+ );
+ $this->addColumn(
+ self::TABLE_NAME,
+ 'deleted_by',
+ $this->integer()->null()->comment('Пользователь, удаливший запись')
+ );
+ $this->addColumn(
+ self::TABLE_NAME,
+ 'deleted_at',
+ $this->timestamp()->null()->defaultValue(null)->comment('Дата мягкого удаления')
+ );
}
}
return;
}
- if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('deleted_at') !== null) {
+ if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('active') !== null) {
+ $this->dropColumn(self::TABLE_NAME, 'active');
+ $this->dropColumn(self::TABLE_NAME, 'deleted_by');
$this->dropColumn(self::TABLE_NAME, 'deleted_at');
}
}
* @property AdminGroup $position Должность работника
* @property Admin $admin работник
* @property Admin $addedBy добавивший пользователь
+ * @property Admin $deleted_by удаливший пользователь
+ * @property int $active активность
+ * @property string $deleted_at время удаления
* @package yii_app\records
*/
class Timetable extends ActiveRecord
{
$query = parent::find();
if (static::hasSoftDelete()) {
- $query->andWhere(['deleted_at' => null]);
+ $query->andWhere(['active' => 1]);
}
return $query;
}
<?php
namespace yii_app\traits;
+use Yii;
use yii\db\ActiveQuery;
trait SoftDeleteTrait
*/
public function softDelete()
{
+ $admin = Yii::$app->user->identity;
+ $this->active = 0;
+ $this->deleted_by = $admin->id;
$this->deleted_at = date('Y-m-d H:i:s');
- return $this->save(false, ['deleted_at']);
+ return $this->save(false, ['active', 'deleted_admin_id', 'deleted_at']);
}
/**
*/
public function restore()
{
+ $this->active = 1;
+ $this->deleted_by = null;
$this->deleted_at = null;
- return $this->save(false, ['deleted_at']);
+ return $this->save(false, ['active', 'deleted_admin_id', 'deleted_at']);
}
/**
*/
public function isDeleted(): bool
{
- return $this->deleted_at !== null;
+ return $this->active === 0;
}
-}
\ No newline at end of file
+}