2015-07-28 10 views
7

Voglio eliminare una riga nel database in base ad alcune condizioni. Ho provato in questo modoCome si eliminano le righe in Yii2?

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

è questo il modo giusto per eliminare una riga nel database?

risposta

15

Quando si lavora con i modelli (ActiveRecord), sì, questo è il modo giusto.

È possibile utilizzare $model->delete() per eliminare il modello. Come risultato, la riga corrispondente nella tabella correlata verrà eliminata.

È possibile utilizzare i gestori di eventi beforeDelete() e afterDelete() insieme a questo metodo per gestire alcune attività correlate all'eliminazione.

Alternative senza utilizzare il modello:

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

o

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

... questo non ha nessuna spiegazione. –

Problemi correlati