2015-04-12 2 views
0

У меня есть 2 таблицы со следующей структурой:Yii 1 - удаление строки после сохранения строк в другой таблице

Store(name, model, serial_number) 
Work(name, model, serial_number, adress) 

Когда я добавить запись в таблицу Работу я получаю данные с ListData из таблицы Store. Проблема в следующем: как я могу удалить строку из Хранилища после сохранения ее в «Работа»?

public function actionCreate() 
{ 

    $model=new Work; 

    // Uncomment the following line if AJAX validation is needed 
    // $this->performAjaxValidation($model); 

    if(isset($_POST['Work'])) 
    { 
     $model->attributes=$_POST['Work']; 

     if($model->save()) { 

      $this->redirect(array('view','id'=>$model->id)); 



     } 

    } 

    $this->render('create',array(
     'model'=>$model, 

     )); 

} 

Я попытался написать querys в if($model->save) блоке, но я не знаю, как удалить строку с помощью serial_number.

Я думаю, что я должен использовать транзакции, но я не знаю, как использовать его в моем примере.

ответ

1

Чтобы удалить его, необходимо указать ваш store. Вы не объяснили, какова связь между этими двумя моделями. Если поле serial_number двух моделей одинаково, вы можете найти store с serial_number из work, а затем удалить его. В этом случае вы можете сделать следующее:

if(isset($_POST['Work'])) 
{ 
    $model->attributes=$_POST['Work']; 

    if($model->save()) { 
     Store::model()->deleteAll("serial_number = " . $model->serial_number); 
     $this->redirect(array('view','id'=>$model->id)); 

    } 

} 

В противном случае вы должны определить отношение между двумя моделями.

+0

Большое спасибо! Теперь он работает хорошо. –

+0

Рад помочь вам. – hamed

Смежные вопросы