我正在使用Yii2.0框架创建一个项目,而我在这个框架中没有得到如何进行软删除。如果我删除任何记录,数据库中该表的Delflag列必须更新为1.但是在核心PHP中,我知道如何操作。
答案 0 :(得分:3)
是的我找到了上述问题的解决方案:Yii2.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();
}
然后转到模特文件夹中的search()
函数,针对该特定模型:searchxyz.php
,设置delFlag='0'
,其结果将被过滤;这就是全部。
答案 1 :(得分:2)
我建议使用这种行为-https://github.com/yii2tech/ar-softdelete
此扩展提供对ActiveRecord的所谓“软”删除的支持,这意味着未从数据库中删除记录,而是用一些标志或状态将其标记,表明该记录不再处于活动状态。
此扩展程序提供[[\ yii2tech \ ar \ softdelete \ SoftDeleteBehavior]] ActiveRecord行为,以支持Yii2中的此类解决方案。您可以通过以下方式将其附加到模型类:
use yii\db\ActiveRecord;
use yii2tech\ar\softdelete\SoftDeleteBehavior;
class Item extends ActiveRecord
{
public function behaviors()
{
return [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::className(),
'softDeleteAttributeValues' => [
'isDeleted' => true
],
],
];
}
}
有两种“软”删除应用方式: