$ model-> foo和FindbyPK之间的区别 - yii

时间:2014-07-11 11:03:39

标签: php yii

我试图了解模型中调用变量与尝试在数据表中查找特定数据集之间的区别。在我的actionCreate中我有

public function actionCreate($id)
{
    $model=new Recipient;
    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Recipient']))
    {
        $model->attributes=$_POST['Recipient'];
        if($model->save())
        {
            Recipient::model()->updateListId($id, $model);
            $this->redirect(array('view','id'=>$model->id));
        }
    }

    $this->render('create',array(
        'model'=>$model,
        'id'=>$id
    ));
}

在我的模型中我试图这样做

public function updateListId($id, $model)
{
    $model->list_id = $id;
    echo $id;
}

为什么我的模型不会像这样更新?我应该使用findByPK吗?


更新

当我使用

public function updateListId($list_id, $model)
{
    $id = $model->id;
    $model->updateByPk($id,array('list_id'=>$list_id));
}

然后更新。谁能解释一下这里发生了什么?

1 个答案:

答案 0 :(得分:1)

由于您有$model = new Recipient,因此可以使用

 $model->id = $id;
 $model->save(); // Here you can pass array to save method to save only specified columns

而不是

Recipient::model()->updateListId($id, $model)

或者如果您希望使用模型功能:

// controller:
$model->updateListId = $id;
$model->save();

// model Recipient
public function setUpdateListId($id) {
    $this->id = $id;
}