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