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

class News extends AppModel{
	var $name = 'News';
	var $hasMany = array('Comments'=>array('className'=>'Comments'));  //comment model megívása
	var $virtualFields = array(
		'comment_count' => 'SELECT COUNT(*) FROM comments as Comments WHERE News.id=Comments.news_id',
		'author' => 'SELECT username FROM users as Users WHERE Users.id=News.user_id'
	);
}
models/comments.php

class Comments extends AppModel {  
    var $name = 'Comments';  
	var $virtualFields = array(
		'author' => 'SELECT username FROM users as Users WHERE Users.id=Comments.user_id'
	);
    var $belongsTo = array('News'); //átadom a news modelnek 
} 
controllers/news_controller.php

...

function read($url){
		$this->updateNewsread($url);
		$this->set('news', $this->News->findByUrl($url)); 
		$this->set('comments', $this->paginate('Comments'));
	}
private function updateNewsread($url){
		$this->News->query('UPDATE news SET readed=readed+1 WHERE news.url="'.$url.'"');
	}
...
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

function read($url){
  $this->News->recursive=0;
  $data=$this->News->findByUrl($url);
  $this->set('news', $data);
  $this->set('comments', $this->paginate('Comments', array('Comments.news_id' => $data['News']['id'])));
}
Megoldottam.