如何删除Yii2中的行?
我想根据某些条件删除数据库中的一行。我试过这样做如何删除Yii2中的行?,yii2,Yii2,我想根据某些条件删除数据库中的一行。我试过这样做 $fanclub = FanClub::find()->where(['user_id'=>$userid])-> andwhere(['crew_member_id'=>$id])->one(); if($fanclub) { $fanclub->delete();
$fanclub = FanClub::find()->where(['user_id'=>$userid])->
andwhere(['crew_member_id'=>$id])->one();
if($fanclub)
{
$fanclub->delete();
}
这是删除数据库中的行的正确方法吗?使用模型(ActiveRecord
)时,是的,这是正确的方法
您可以使用$model->delete()
删除模型。因此,将删除相关表中的相应行
您可以将beforeDelete()
和afterDelete()
事件处理程序与此方法一起使用,以处理与删除相关的一些任务
不使用模型的备选方案:
\Yii::$app
->db
->createCommand()
->delete('users', ['id' => 1])
->execute();
或
你可以用这种方式
ProjectEmployee::deleteAll(['and',
[ 'employee_id'=>$this->id],
['in', 'project_id', [2,5,7]]]
);
在这里,您将首先获取记录,但您可以直接进行
$fanclub = FanClub::find()
->where(['user_id'=>$userid])
->andwhere(['crew_member_id'=>$id])
->one()
->delete();
…这没有解释。这很好用,但如果我用它进行更新查询,它是sql注入保存吗?为什么会被否决?也许这是最直截了当的答案。
ProjectEmployee::deleteAll(['and',
[ 'employee_id'=>$this->id],
['in', 'project_id', [2,5,7]]]
);
$fanclub = FanClub::find()
->where(['user_id'=>$userid])
->andwhere(['crew_member_id'=>$id])
->one()
->delete();