2015-07-28 46 views
7

我想根据某些条件删除数据库中的一行。我试过像这样如何删除Yii2中的行?

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

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

回答

15

使用机型(ActiveRecord)时,是的,这是正确的方法。

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

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

替代方案,而无需使用模式:

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

use yii\db\Query; 

... 

(new Query) 
    ->createCommand() 
    ->delete('users', ['id' => 1]) 
    ->execute(); 
0
$x = Yii::$app->db->createCommand(" 
    DELETE FROM group_members 
    WHERE group_id = '$id' 
    AND member_id = '$usr' 
")->execute(); 
+3

...这没有任何解释。 –