У меня есть 2 таблицы со следующей структурой:
Store(name, model, serial_number)
Work(name, model, serial_number, adress)
Когда я добавляю запись в таблицу Work, я получаю данные с ListData из таблицы Store. Проблема заключается в следующем: как я могу удалить строку из Store после того, как я сохраню ее в Work?
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,
));
}
Я пытался написать запросы в if($model->save)
блок, но я не знаю, как удалить строку serial_number
,
Я думаю, что я должен использовать транзакции, но я не знаю, как использовать это в моем примере.
Вы должны определить свой 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));
}
}
В противном случае вы должны определить связь между двумя моделями.
Других решений пока нет …