0

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

这是我的功能:

    $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'));
    }

你们能帮帮我吗?

4

1 回答 1

2

两件事情:

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

$this->loadModel('Comment');

就在你打电话的那条线上$this->loadModel('Comment');,你有一条线说$this->Comment->id$this->Comment是您的评论模型的一个实例。在 Cake 中,每个控制器都有一个对应模型的实例,可以通过$this->ModelName.

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

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

$this->Comment->Video->id = $videoId;
$this->Comment->Video->set('accepted', 1);
$this->Comment->Video->save()
于 2013-10-08T21:59:22.793 回答