2015-07-28 53 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

...這沒有任何解釋。 –