symfony与join的分页

时间:2010-08-24 23:09:05

标签: symfony1

如何对在symfony中加入的查询进行分页?我正在尝试这段代码,但它超时了:

$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();

2 个答案:

答案 0 :(得分:0)

你的paginator代码似乎很好。我的问题在于您的查询。

尝试在没有寻呼机的情况下运行它并查看结果。

如果您继续遇到查询问题,请尝试尝试。

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

我自己没有尝试过,但是如果您的架构关系是按照我的想法定义的话,它应该可以工作。

还有一件事,可能你已经知道了。

$pager->setPage(1); 

应该是

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

答案 1 :(得分:0)

我需要在分页中更改计数查询。要做到这一点:

$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;

你唯一需要做的就是在你的分页助手中,使用:

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