Php 在哪里保存模型-Yii

Php 在哪里保存模型-Yii,php,yii,model,Php,Yii,Model,最近有人向我介绍了保存已更新模型的概念。在本例中,我创建了一个名为incrementPayList的函数,它接收列表的id并将其递增1 这是工资表模型中函数的代码 public function incrementPayList($id) { $results = Recipient::model()->findAll(array("condition"=>"list_id = $id")); $count = count ( $results ); $th

最近有人向我介绍了保存已更新模型的概念。在本例中,我创建了一个名为incrementPayList的函数,它接收列表的id并将其递增1

这是工资表模型中函数的代码

public function incrementPayList($id) 
{
    $results = Recipient::model()->findAll(array("condition"=>"list_id = $id"));
    $count = count ( $results );
    $this->num_indv = $count + 1;         
}
现在在接收方控制器中,我调用这个函数。接收者持有与某个薪资列表相关的所有个人

 */
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'];

        Paylist::model()->incrementPayList($id);
        if($model->save())
        {
            $this->redirect(array('view','id'=>$model->id));
        }
    }

    $this->render('create',array(
        'model'=>$model,
        'id'=>$id
    ));
}
我知道
$count
返回了正确的数字,但它没有将该计数保存在num\u indv字段中。我有一个线索,这是因为我没有保存新的工资单模式。但是,我应该如何/在何处执行此操作?我应该在函数本身内部执行吗?还是应该在控制器中执行?但是,如果我在控制器中这样做,我不能简单地使用
$model->save()
,因为它不是同一个模型

你可以这样存钱

$modelPaylist = new Paylist;

    if(modelPaylist->save())....

它不起作用的原因是,您没有在工资列表实例
$model
上运行
incrementPayList
,而是在
收件人
单例上运行(有关更多信息,请参阅和)

您的代码应为:

$model->attributes=$_POST['Recipient'];
$model->incrementPayList($id);
if($model->save())
    {

也可以使用而不是
findAll
后跟
count($results)
,因为您只需要数字而不需要项目本身。

这是在模型中还是在控制器中?在收件人控制器中$model->incrementPayList($id)将如何操作;如果$model已形成为新的收件人模型,则可以工作。你是说我应该把递增工资单放在收件人模型中吗?如果我错了,请纠正我,但是
incrementPayList
为单个记录设置了
num\u indv
。每个
CActiveRecord
代表一个记录,因此应该从
$model
调用它,而不是从
Recipient::model()