0

ビデオファイル形式を処理するアップロードコントローラーがあります。アップロード コントローラーでは、アップロードされたすべての動画を閲覧して見ることができます。関数 watch には、userid (現在ログインしているユーザーが残したコメント) uploadid (現在監視されているアップロード済み) と comment (ユーザーのコメント) でコメント テーブルを更新する comments 要素があります。

フォームは完全に機能していますが、実装に必要なクエリなど、コメント テーブルから情報を取得する方法がわかりません。

助言がありますか?

4

1 に答える 1

1

私はあなたの他の投稿CakePHP Elements not updates tableを見たので、あなたの状況をある程度把握しています。Post モデルでコメントを表しているようです。

UploadsController で、Post モデルからデータをクエリしたいのですね。

コメント テーブルの名前がcommentsの場合、それが Post モデルに関連付けられていることを確認する必要があります。モデルとデータベース テーブルが Cake の命名規則に従っている場合、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 は、投稿が単一のアップロードにのみ属することができることを意味します。

最後に、モデルの関連付けが設定されたので、コントローラーで関連するモデルにアクセスできます。

<?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 に答える