我有一个处理视频文件格式的上传控制器。在上传控制器中,您可以浏览上传的所有视频并观看它们。在函数监视器中,我有一个comments元素,用userid更新评论表(当前登录的用户留下的评论)uploadid(当前正在监视的上传)和评论(用户的评论)。
我已经完美地运行了表单,但是我不确定如何从评论表中获取信息,例如要实现的必要查询?
有什么建议吗?
答案 0 :(得分:1)
我看到你的另一篇文章CakePHP Elements not updating table,所以我对你的情况有所了解。您似乎正在使用Post模型表示评论。
你想在你的UploadsController中查询你的Post模型中的数据,对吗?
如果您的评论表名为comments
,则需要确保它与您的帖子模型相关联。如果模型和数据库表遵循Cake的命名约定,它会自动关联它们。但如果它们实际上不同,您可以为Post模型指定自定义数据库表:
<?php
class Post extends AppModel {
var $useTable = "comments" /*Or whatever you named your comments table*/
...
}
?>
您还必须确保在发布和上传之间设置模型关联:
Post belongsTo Upload
Upload hasMany Post
我注意到你有:
Post belongsTo Upload
Upload hasAndBelongsToMany Post
有没有理由说它是HABTM? HABTM意味着同一个帖子可以属于许多不同的上传。 hasMany暗示Post只能属于单个Upload。
最后,现在已经建立了模型关联,您可以访问控制器中的相关模型:
<?php
class UploadsController extends AppController {
...
function watch ($id = null) {
$this->Upload->id = $id;
$this->set('uploads', $this->Upload->read());
/* To get related comments (Posts) */
$related_comments = $this->Upload->Post->find('all', array(
'conditions' => array(
'Upload.id' => $id /* This condition makes it so only associated comments are found */
)
));
$this->set('comments', $related_comments);
}
...
}
?>