ugrás a tartalomhoz

CakePHP pagination

Tanul0 · 2011. Ápr. 12. (K), 17.25
Üdv!

Elkezdtem írni cakePHP segítségével egy hírező rendszert.

Egy hír olvasásánál, kiírja a kommenteket, amelyeket csak 10-esével szeretnék megjeleníteni.

Ez működik is, csak éppen dupla lekérdezés történik.


models/news.php
  1. class News extends AppModel{  
  2.     var $name = 'News';  
  3.     var $hasMany = array('Comments'=>array('className'=>'Comments'));  //comment model megívása  
  4.     var $virtualFields = array(  
  5.         'comment_count' => 'SELECT COUNT(*) FROM comments as Comments WHERE News.id=Comments.news_id',  
  6.         'author' => 'SELECT username FROM users as Users WHERE Users.id=News.user_id'  
  7.     );  
  8. }  
models/comments.php
  1. class Comments extends AppModel {    
  2.     var $name = 'Comments';    
  3.     var $virtualFields = array(  
  4.         'author' => 'SELECT username FROM users as Users WHERE Users.id=Comments.user_id'  
  5.     );  
  6.     var $belongsTo = array('News'); //átadom a news modelnek   
  7. }   
controllers/news_controller.php
  1. ...  
  2.   
  3. function read($url){  
  4.         $this->updateNewsread($url);  
  5.         $this->set('news'$this->News->findByUrl($url));   
  6.         $this->set('comments'$this->paginate('Comments'));  
  7.     }  
  8. private function updateNewsread($url){  
  9.         $this->News->query('UPDATE news SET readed=readed+1 WHERE news.url="'.$url.'"');  
  10.     }  
  11. ...  
Ekkor a $news tömb tartalma

News => array(//az adott hír tartalma)
Comments => array(//az összes komment ami ehhez a hírhez tartozik)


$comments tartalma

Comments => array(//az egy oldalra jutó komment)

Kérdésem, hogyan lehetne másképp megoldani, hogy ne legyen benne a $news tömbben az összes komment, mert így körülbelül adtam a sz@rnak egy pofont.

Előre is köszönöm!

Ui: kb 2 napja kezdtem el a cakephp-val foglalkozni, googleben nem találtam rá megoldást, csak ugyen ezt. (Méghozzá itt: http://blog.matsimitsu.nl/code/162/paginating-child-models)

Üdv!
 
1

function read($url){

Tanul0 · 2011. Ápr. 13. (Sze), 09.47
  1. function read($url){  
  2.   $this->News->recursive=0;  
  3.   $data=$this->News->findByUrl($url);  
  4.   $this->set('news'$data);  
  5.   $this->set('comments'$this->paginate('Comments'array('Comments.news_id' => $data['News']['id'])));  
  6. }  
Megoldottam.