日付の月を抽出する MONTH 関数を作成します。
これらのクエリで結果を GROUP BY したい:
SELECT MONTH(p.publicationDateStart) AS archive
FROM ApplicationSonataNewsBundle:Post p
GROUP BY archive
しかし、それは私にエラーを与えます:
An exception has been thrown during the rendering of a template
("Notice: Undefined index: archive in
/home/kiddo/Code/apache2/work/ibctal.dev/vendor/doctrine/orm/lib/Doctrine/ORM/Query
/SqlWalker.php line 2197") in ApplicationSonataNewsBundle:Post:archive.html.twig
at line 10.
この問題を解決するにはどうすればよいですか。
参考までに、ドクトリンのコミットに関するこの情報を見つけました: https://github.com/doctrine/doctrine2/commit/2642daa43851878688d01625f272ff5874cac7b2 :
編集 :
ここにコントローラーコードがあります
名前空間 Application\Sonata\NewsBundle\Controller;
Symfony\Bundle\FrameworkBundle\Controller\Controller を使用します。Doctrine\ORM\Query\ResultSetMapping を使用します。
class SidebarController extends Controller
{
public function archiveAction()
{
$em = $this->getDoctrine()->getManager();
$dql = "SELECT
MONTH(p.publicationDateStart) AS archive,
p.publicationDate AS HIDDEN archiveDate
FROM
ApplicationSonataNewsBundle:Post p
GROUP BY
MONTH(archiveDate)";
$query = $em->createQuery($dql);
$paginator = $this->get('knp_paginator');
$pager = $paginator->paginate($query, $this->get('request')->query->get('page', 1), 10);
return $this->render('ApplicationSonataNewsBundle:Sidebar:archive.html.twig', array(
'archives' => $pager
));
} }
参考までに、私は2.3.1-DEVバージョンを使用しています