2010-08-24 6 views
0

Comment paginer une requête qui a une jointure dans symfony? J'essaye ce code mais il expire:pagination symfony avec jointure

$query=Doctrine_Query::create() 
->select('c.name, d.phone') 
->from('company c, companyDetails d') 
->where('c.companyId=d.companyId'); 

$pager = new sfDoctrinePager('company',10); 
$pager->setQuery($query); 
$pager->setPage(1); 
$pager->init(); 
$this->companys=$pager->getResults(); 
+0

Est-ce que la course de requête d'accord sur son propre? –

Répondre

0

Je avais besoin de changer la requête de comptage dans la pagination. Pour ce faire:

$pager = new Doctrine_Pager($query,$request->getParameter('page',1),10); 
$pager->setCountQuery('SELECT COUNT(id) FROM items WHERE city_id='.$city.' AND category_id='.$category); 
$this->pager=$pager; 

La seule chose que vous avez à faire est dans votre aide de pagination, utilisez:

$pagerRange = $pager->getRange('Sliding',array('chunk' => 5)); 
$pages = $pagerRange->rangeAroundPage(); 
0

Votre code de paginator semble bien. Je pense que le problème est avec votre requête. Essayez de l'exécuter sans le pager et voir le résultat.

Si vous continuez à rencontrer des problèmes avec la requête, essayez-le.

$query=Doctrine_Query::create() 
->select('c.name, d.phone') 
->from('company c') 
->innerJoin('c.companyDetails d'); 

Je n'ai pas essayé moi-même, mais cela devrait fonctionner si vos relations de schéma sont définies comme je pense.

Encore une chose, probablement vous le savez déjà.

$pager->setPage(1); 

devrait être quelque chose comme

$pager->setPage($request->getParameter('page', 1));