Yii2.0框架下的软删除

Yii2.0框架下的软删除,yii2,Yii2,我正在使用Yii2.0框架创建一个项目,我不知道如何在这个框架中进行软删除。如果删除任何记录,数据库中该表的Delflag列必须更新为1。然而,在核心PHP中,我知道如何做到这一点。是的,我找到了上述问题的解决方案:Yi2.0框架中的软删除 只需转到controllers文件夹下的xyzcontroller.php,并更改actionDelete()函数,将所需的列值设置为我们想要的任何值,在我的例子中是DelFlag='9',然后保存模型 public function actionDelet

我正在使用Yii2.0框架创建一个项目,我不知道如何在这个框架中进行软删除。如果删除任何记录,数据库中该表的Delflag列必须更新为1。然而,在核心PHP中,我知道如何做到这一点。

是的,我找到了上述问题的解决方案:Yi2.0框架中的软删除

只需转到controllers文件夹下的
xyzcontroller.php
,并更改
actionDelete()
函数,将所需的列值设置为我们想要的任何值,在我的例子中是
DelFlag='9'
,然后保存模型

public function actionDelete($id)
{
    $model = $this->findModel($id);
    $model->delFlg = '9';
    $model->save();  // equivalent to $model->update();
    return $this->redirect(['index']);
    // $this->findModel($id)->delete();
}

然后转到models文件夹中的
search()
函数,对于特定的模型:
searchxyz.php
,设置
delFlag='0'
,在那里过滤结果;仅此而已。

我建议使用这种行为-

此扩展支持ActiveRecord的所谓“软”删除,这意味着记录不会从数据库中删除,而是用一些标志或状态标记,这表明它不再处于活动状态

此扩展为Yii2中的此类解决方案支持提供[\yii2tech\ar\softdelete\SoftDeleteBehavior]]ActiveRecord行为。可以通过以下方式将其附加到模型类:

use yii\db\ActiveRecord;
use yii2tech\ar\softdelete\SoftDeleteBehavior;

class Item extends ActiveRecord
{
    public function behaviors()
    {
        return [
            'softDeleteBehavior' => [
                'class' => SoftDeleteBehavior::className(),
                'softDeleteAttributeValues' => [
                    'isDeleted' => true
                ],
            ],
        ];
    }
}
“软”删除应用有两种方式:

  • 使用softDelete()分离方法
  • 变异正则delete()方法

是的,当我们需要快速配置(几乎为空配置)时,它很容易使用,但当这涉及到大型应用程序时,这将变得更加困难,并且令人困惑……\。