Twig foreach group by date

Rei*_*ghe 1 group-by symfony twig

我有一张名为'匹配'的足球比赛桌.在该表中有一个字段'kickoff',它是匹配开始时的datetime-column.使用以下代码,我可以获得表格中的所有匹配项.

$matches = $em->createQueryBuilder()
        ->select('m')
        ->from('FootballWcBundle:Matches', 'm')
        ->addOrderBy('m.kickoff', 'ASC')
        ->getQuery()
        ->getResult();

return $this->render('FootballWcBundle:Page:matches.html.twig', array(
        'matches' => $matches
));
Run Code Online (Sandbox Code Playgroud)

现在我想显示按日期分组的屏幕上的匹配项.像这样:

二〇一四年十二月十二日

MATCH1

MATCH2

14-12-2014

MATCH3

match4

match5

有没有办法让Twig知道如何通过启动列进行分组,还是有另一种方法可以做到这一点?

Air*_*ram 7

你可以这样做,如下所示:

    {% set date = null %}
    {% for match in matches %}
        {% if date != match.kickoff %}
            {% set date = match.kickoff %}
            <h3>{{ date }}</h3>
        {% endif %}

        <p>{{ match.name }}</p>
    {% endfor %}
Run Code Online (Sandbox Code Playgroud)

这样,你将第一个日期设置为null,然后迭代所有匹配并写一个带有名称的'p'标签(我认为匹配有一个名称来做例子),当匹配日期改变时,你用匹配日期写一个'h3'标签.由于在第一次迭代中将日期设置为null,因此第一个日期将为write.