0

日付の月を抽出する 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バージョンを使用しています

4

1 に答える 1

0

これと同じ目的で同様の回避策を使用する必要がありました。私の解決策を確認してください。

SELECT 
    MONTH(p.publicationDateStart) as archive, 
    CAST(p.publicationDateStart as date) AS HIDDEN archiveDate 
FROM
    ApplicationSonataNewsBundle:Post p
GROUP BY 
    MONTH(archiveDate)
于 2013-01-02T13:26:55.953 に答える