推进寻呼机(symfony)中的列顺序

Posted

技术标签:

【中文标题】推进寻呼机(symfony)中的列顺序【英文标题】:Column order in propel pager (symfony) 【发布时间】:2011-12-29 15:11:52 【问题描述】:

我在 executeIndex 操作中有这段代码:

$pager = new sfPropelPager('News',5);
$c = new Criteria();
$c->clearSelectColumns();
$c->addSelectColumn(NewsPeer::ID);
$c->addSelectColumn(NewsPeer::TYTUL);
$c->addSelectColumn(NewsPeer::SLUG);
$c->addSelectColumn(NewsPeer::TEKST);
$c->addSelectColumn(NewsPeer::UTW);
$c->addSelectColumn(NewsPeer::WYSWIETLENIA);
$c->addDescendingOrderByColumn(NewsPeer::UTW);
$pager->setCriteria($c);
$pager->setPage($this->getRequestParameter("p", 1));
$pager->init();
$this->pager=$pager;

如您所见,我从 9 列中选择了 6 列。

当我想在 indexSuccess 中打印 UTW 列时,它什么也不打印。当我这样做时:print_r($news),我得到了这个:

[id:protected] => 64
[tytul:protected] => Limit
[slug:protected] => limit
[tekst:protected] => text.....
[pelnytekst:protected] => 2011-12-22 08:54:07
[stan:protected] => 42
[utw:protected] => 
[zmi:protected] => 
[wyswietlenia:protected] => 

它应该是:

[id:protected] => 64
[tytul:protected] => Limit
[slug:protected] => limit
[tekst:protected] => text.....
[pelnytekst:protected] => 
[stan:protected] => 
[utw:protected] => 2011-12-22 08:54:07
[zmi:protected] => 
[wyswietlenia:protected] => 42

所以,没关系,当我选择与表中顺序相同的列时,但当我跳过一个时,值会变得混乱。如何解决这个问题?

【问题讨论】:

能否在模板中添加打印UTW的代码? 【参考方案1】:

您需要将 PeerMethod 设置为“doSelectStmt”。

$pager->setCriteria($c);
$pager->setPeerMethod('doSelectStmt');  // add this
$pager->setPage($this->getRequestParameter("p", 1));
$pager->init();
$this->pager=$pager;

【讨论】:

以上是关于推进寻呼机(symfony)中的列顺序的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 寻呼机 - 组件 - 查询问题

sfGuard 和推进寻呼机

带有多个表的 Symfony sfDoctrinePager

使用 Symfony 路由从 .htaccess 重写 URL

Symfony 2.3 Bad Credentials 自定义提供程序

Symfony 5:/lucky/number 应用程序的 404 页面