Yii 1 - 在其他表中保存行后删除行

时间:2015-04-12 12:31:59

标签: php mysql yii transactions cactiverecord

我有2个具有以下结构的表:

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

当我向表格Work添加记录时,我从表Store中获取ListData的数据。问题是:在将其保存到Work后,如何从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,

        ));

}

我尝试在if($model->save)块中编写查询,但我不知道如何通过serial_number删除该行。

我认为我应该使用交易,但我不知道如何在我的例子中使用它。

1 个答案:

答案 0 :(得分: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));

    }

}

否则,您应该定义两个模型之间的关系。