Yii2将查询结果传递给另一个控制器中的操作

时间:2016-10-20 06:58:19

标签: yii2 audit

我正在尝试在更新任何其他表中的记录时将记录插入到我的审计表中。例如,如果用户更新了他的配置文件,我想将旧记录和新更新的记录存储在我的审计表中。为此,在我的用户模型中,我尝试使用beforeSave()并将值传递给我的审计控制器

public function beforeSave($insert)
    {
        if((parent::beforeSave($insert))){
                        // Place your custom code here
                        $query = DepCustomer::findOne($this->customer_id);
                        Yii::$app->runAction('audit-trial/createaudit', ['query' => $query]);
                return true;
        }
    } 

现在审核控制器中的操作代码

public function actionCreateaudit($query)
{
    $model = new Audit();

            $model->old = '';
            foreach($query as $name => $value){
                //$temp = $name .': '. $value.',  ';
                //$contentBefore[] = $temp;
                $audit->old = $audit->old.$name .': '. $value. ', ';
            } 
            // I've not yet any other code for now I'm trying to get the old value
            $model->save();
}

我发现404找不到错误。我需要在代码中进行哪些更改才能使其正常工作?谢谢!

1 个答案:

答案 0 :(得分:0)

而不是runAction()。如果要在另一个模型上执行操作,则更喜欢在该模型中创建静态函数(在您的情况下为Audit模型)以保存数据

public function beforeSave($insert)
    {
        if((parent::beforeSave($insert))){
                        // Place your custom code here
                        $query = DepCustomer::findOne($this->customer_id);
                       Audit::saveOldDetails($query);
                return true;
        }
    } 

并在saveOldDetails

中写下Audit Model函数
public static saveOldDetails($query){
 // your business logic here
}

请参阅此链接 http://www.yiiframework.com/doc-2.0/yii-base-controller.html#runAction()-detail