sfPropelPager减少查询

时间:2011-12-01 14:30:33

标签: mysql symfony1 propel

我正在使用symfony项目并使用sfPropelPager来显示元素的分页列表。 问题是,要列出大量数据(即数千个寄存器),它会使对数据库的查询显示每个页面!!!! 这意味着在我的情况下大约有100个额外的查询,这是不可接受的。

显示我的一些代码:返回分页器对象的函数

$pager = new sfPropelPager('MyTable',sfConfig::get('sfPropelPagerLines'));
$c = new Criteria();
$c->add('my_table_field',$value);
$c->addDescendingOrderByColumn('date');
$pager->setCriteria($c);
$pager->init();
return $pager;

所以,如果你知道只用一个查询获得所有结果的方法,那么对我的问题来说这将是一个很好的解决方案。否则,我必须使用ajax调用为用户想要查看的每个页面实现该列表

非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

我不确定是否会解决您的问题,但无论如何,请避免使用Criteria。尝试使用ModelCriteria API进行查询:http://www.propelorm.org/reference/model-criteria.html

对于每个分页页面,将对数据库进行查询,这是我所知道的所有寻呼机的标准行为。如果它与相关对象相关(假设您想要显示关系中的信息),您可能希望创建一个查询,将这些对象链接到分页之前,这样您每页将获得一个查询以显示所有数据。 请阅读此文档,例如:http://www.propelorm.org/documentation/03-basic-crud.html#query_termination_methods

答案 1 :(得分:0)

最后我没有得到问题的解决方案,我不得不通过AJAX调用实现列表,调用返回请求页面的函数,所以在页面加载时,没有查询这个列表正在减慢用户体验。

无论如何,谢谢你帮助我:)