0

我有一个处理视频文件格式的上传控制器。在上传控制器中,您可以浏览所有上传的视频并观看它们。在函数 watch 中,我有一个 comments 元素,它使用 userid(当前登录的用户留下的评论)uploadid(当前正在观看的上传)和评论(用户的评论)更新评论表。

我的表格工作得很好,但是我不确定如何从评论表中获取信息,例如要实现的必要查询?

有什么建议么?

4

1 回答 1

1

我看到您的另一篇文章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);
    }

    ...

 }
 ?>
于 2012-04-12T04:21:40.383 回答