CakePhp在其他模型中加载模型并修改其数据

时间:2013-10-08 20:14:26

标签: cakephp

我的评论模型和视频模型与belongsTo和hasMany关系相关联。我需要在Comment的控制器(在一个动作中)加载连接的视频,更改其一个属性,然后保存评论和视频。我知道如何更改评论模型,但我无法以任何方式更改视频模型。

这是我的功能:

    $this->Comment->id = $id;
    if($this->Comment->exists()){
        $this->loadModel('Comment');
        $this->Comment->set('accepted', 1);
        if($this->Comment->save()){
            $this->Session->setFlash('Comment accepted');
            //HOW TO CHANGE ATTR OF VIDEO
            //in $this->Comment->video_id there is NULL
        }
        else
            $this->Session->setFlash('Can't accept comment');

        $this->redirect($this->request->referer());
    }
    else{
        throw new NotFoundException(__('Invalid comment'));
    }

你能帮帮我们吗?

1 个答案:

答案 0 :(得分:2)

两件事:

首先,您根本不需要调用它:

$this->loadModel('Comment');

在您拨打$this->loadModel('Comment');的行上方,您有一行$this->Comment->id$this->Comment是您的评论模型的一个实例。在Cake中,每个控制器都有一个相应模型的实例,可以通过$this->ModelName访问。

其次,您的评论模型将依次具有您的视频模型的实例。因此,您的视频模型已经可以通过评论控制器访问$this->Comment->Video

因此,要修改视频模型,您必须先获取Comment的video_id,然后执行此操作:

$this->Comment->Video->id = $videoId;
$this->Comment->Video->set('accepted', 1);
$this->Comment->Video->save()