2012-04-11 4 views
0

私はビデオファイルフォーマットを扱うアップロードコントローラを持っています。アップロードコントローラーでは、アップロードされたすべてのビデオをブラウズして見ることができます。ファンクションウォッチでは、ユーザーID(現在ログインしているユーザーによって残されたコメント)と、uploadid(アップロードされたものが現在監視されている)とコメント(ユーザーのコメント)でコメントテーブルを更新するcomments要素があります。CakePHP 2.0 - 2.1、コントローラと異なるモデルを問い合わせる

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

提案がありますか?

答えて

1

あなたの他の投稿CakePHP Elements not updating tableを見ましたので、私はあなたの状況のアイデアを持っています。投稿モデルでコメントを表明しているようです。

Postsモデルのデータをアップロードするには、UploadsControllerで正しいとしますか?

コメントテーブルの名前がcommentsの場合は、それが投稿モデルに関連付けられていることを確認する必要があります。 Cakeの命名規則に従っている場合、Cakeはモデルとデータベーステーブルを自動的に関連付けます。しかし、彼らが実際に異なっている場合、あなたはあなたのポストモデル用のカスタムデータベーステーブルを指定することができます。

Post belongsTo Upload 
Upload hasMany Post 

<?php 
class Post extends AppModel { 

    var $useTable = "comments" /*Or whatever you named your comments table*/ 

    ... 
} 
?> 

あなたはまた、モデルのアソシエーションがポストとのアップロードの間に設定されていることを確認する必要がありますあなたが気付いたのは、

Post belongsTo Upload 
Upload hasAndBelongsToMany Post 

HABTMの理由はありますか? HABTMは、同じPostが多くの異なるUploadに属することを意味します。 hasManyは、投稿が1つのアップロードにしか属していないことを意味します。

最後に、今、モデルの関連付けが設定されていることを、あなたはコントローラに関連したモデルにアクセスすることができます。私は、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); 
    } 

    ... 

} 
?> 
+0

おかげで、私はHABTMを使用します エラー:SQLSTATE [23000]:整合性制約違反:1052 where句の 'uploadid'カラムが曖昧です $ related_commentsを使用すると、次のエラーが発生します。 致命的なエラー:/Applications/XAMPP/xamppfiles/htdocs/evolvids/app/Controller/UploadsController.php 57行目の非オブジェクトのメンバー関数find()を呼び出す また、私はコメントテーブルを破棄しましたモデルとはちょうどそれを投稿、任意のアイデアと呼びましたか? – 001221

+0

ok hasManyステートメントを使用すると、データベースからエコーされた情報がページ上で3回複製されていますが、データベースエラーが発生しました(これはHABTMを使用した元の理由です)。なぜこのようなことが起こっているのか分かりません。限界を1に設定しましたが、違いはありません。 – 001221

+0

私はそれを$ this-> Upload-> Postの代わりに$ this-> Postに変更すると完全に動作するので、心配はありません!私はページ上に重複するエントリがあるため、オリジナルのHABTMを保持しました。あなたの助けを借りてありがとう:) – 001221

関連する問題