symfonyとpagerとgroup by
symfonyで使えるsfPropelPager
便利でよいのだが、group byをするとトータルの数がうまく取得できず、group byした総計が返ってこない。
それを回避するためのtips
public static function getSomething($item_id, $page) { $c = new Criteria(); $c->add(self::ITEM_ID, $item_id); $c->add(self::IS_DELETE, false); $pager = new sfPropelPager('Something', 10); $pager->setCriteria($c); $pager->setPage($page); $pager->setPeerCountMethod('getGroupedItemIdCount'); $pager->init(); return $pager; }
セレクトする部分は上記のように書き
同じモデル内に
public static function getGroupedItemIdCount($c)
{
$copy = clone $c;
// ここはgroupbyしたいカラム名
$copy->addGroupByColumn(parent::ITEM_ID);
return parent::doCount($copy);
}
を加える
そうするとどうだろう、group byした総計が返ってくるではありませんか