首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePhp加载其他模型中的模型并修改其数据

问CakePhp加载其他模型中的模型并修改其数据
EN

Stack Overflow用户
提问于 2013-10-09 04:14:26
回答 1查看 806关注 0票数 0

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

这是我的函数:

代码语言:javascript
复制
    $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'));
    }

你们能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-09 05:59:23

两件事:

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

代码语言:javascript
复制
$this->loadModel('Comment');

就在调用$this->loadModel('Comment');的代码行的上面,有一行代码是$this->Comment->id。$this->Comment是评论模型的一个实例。在Cake中,每个控制器都有其对应模型的一个实例,可通过$this->ModelName访问。

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

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

代码语言:javascript
复制
$this->Comment->Video->id = $videoId;
$this->Comment->Video->set('accepted', 1);
$this->Comment->Video->save()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19257443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档