如何删除Yii2中的行?

Blo*_*und 11 yii2

我想根据某些条件删除数据库中的一行.我试过这样的

$fanclub        =   FanClub::find()->where(['user_id'=>$userid])->
            andwhere(['crew_member_id'=>$id])->one();
            if($fanclub)
            {
                $fanclub->delete();
            }
Run Code Online (Sandbox Code Playgroud)

这是删除数据库中的行的正确方法吗?

aro*_*hev 21

使用models(ActiveRecord)时,是的,这是正确的方法.

您可以使用$model->delete()删除模型.结果,相关表中的相应行将被删除.

您可以使用beforeDelete()afterDelete()事件处理程序一起使用此方法来处理与删除相关的一些任务.

不使用模型的替代方案:

\Yii::$app
    ->db
    ->createCommand()
    ->delete('users', ['id' => 1])
    ->execute();
Run Code Online (Sandbox Code Playgroud)

要么

use yii\db\Query;

...

(new Query)
    ->createCommand()
    ->delete('users', ['id' => 1])
    ->execute();
Run Code Online (Sandbox Code Playgroud)


Esl*_*med 15

你可以用这种方式

ProjectEmployee::deleteAll(['and',
            [ 'employee_id'=>$this->id],
            ['in', 'project_id', [2,5,7]]]
        );
Run Code Online (Sandbox Code Playgroud)

但请注意,这可用于根据以下条件删除单行或多arrayin

  • 为什么这被否决了?可能是这里最直接的答案。 (2认同)