2012-04-11 56 views
0

我有一個處理視頻文件格式的上傳控制器。在上傳控制器中,您可以瀏覽上傳的所有視頻並觀看它們。在函數watch中,我有一個comments元素,它用用戶id(當前登錄的用戶留下的留言)uploadid(上傳的當前正在觀看的)和評論(用戶評論)更新評論表。CakePHP 2.0 - 2.1,從控制器查詢不同型號

我已經完成了表單工作,但是我不確定如何從註釋表中獲取信息,例如必須執行的查詢?

有什麼建議嗎?

回答

1

我看到你的其他帖子CakePHP Elements not updating table,所以我有點想你的情況。看起來你是用Post模型代表評論。

您想在您的UploadsController中查詢Post模型中的數據嗎?

如果您的評論表名爲comments,則需要確保它與您的發佈模型相關聯。如果Cake遵循Cake的命名約定,它會自動將模型和數據庫表關聯起來。但是,如果他們其實不同,你可以發表你的模型指定自定義數據庫表:

<?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只能屬於單個上傳。

最後,現在的模型協會的成立,你可以在一個控制器訪問相關機型:

<?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因爲如果我使用的hasMany我得到一個錯誤 數據庫錯誤 錯誤:SQLSTATE [23000]:完整性約束違規:1052 where子句中的'uploadid'列不明確 使用$ related_comments我得到以下錯誤; 致命錯誤:調用第57行上的/Applications/XAMPP/xamppfiles/htdocs/evolvids/app/Controller/UploadsController.php中的非對象上的成員函數find()查找另外還有,我已經放棄了註釋表和模型,只是把它稱爲帖子,任何想法? – 001221 2012-04-12 14:50:40

+0

ok我創建了數據庫錯誤,但是(我記得這是我使用HABTM的原始原因),當使用hasMany語句時,從數據庫回顯的信息在頁面上被重複3次?看不出爲什麼會發生這種情況,我已將限制設置爲1,那也沒什麼區別,對於爲什麼發生這種情況的任何想法? – 001221 2012-04-12 15:21:39

+0

不用擔心,因爲如果我將它更改爲$ this-> Post而不是$ this-> Upload-> Post它完美的工作!由於它在頁面上的重複條目,我保留了原始的HABTM。感謝您的幫助,雖然:) – 001221 2012-04-12 15:26:20