我有一个处理视频文件格式的上传控制器。在上传控制器中,您可以浏览所有上传的视频并观看它们。在函数 watch 中,我有一个 comments 元素,它使用 userid(当前登录的用户留下的评论)uploadid(当前正在观看的上传)和评论(用户的评论)更新评论表。
我的表格工作得很好,但是我不确定如何从评论表中获取信息,例如要实现的必要查询?
有什么建议么?
我有一个处理视频文件格式的上传控制器。在上传控制器中,您可以浏览所有上传的视频并观看它们。在函数 watch 中,我有一个 comments 元素,它使用 userid(当前登录的用户留下的评论)uploadid(当前正在观看的上传)和评论(用户的评论)更新评论表。
我的表格工作得很好,但是我不确定如何从评论表中获取信息,例如要实现的必要查询?
有什么建议么?
我看到您的另一篇文章CakePHP Elements not updated table,所以我对您的情况有所了解。您似乎在用您的 Post 模型表示评论。
您想在 UploadsController 中从 Post 模型中查询数据,对吗?
如果您的 comments 表名为comments
,您需要确保它与您的 Post 模型相关联。如果模型和数据库表遵循 Cake 的命名约定,Cake 会自动关联它们。但如果它们实际上不同,您可以为您的 Post 模型指定一个自定义数据库表:
<?php
class Post extends AppModel {
var $useTable = "comments" /*Or whatever you named your comments table*/
...
}
?>
您还必须确保在 Post 和 Upload 之间设置模型关联:
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);
}
...
}
?>