gpt4 book ai didi

symfony - Doctrine2 - 如何按月设置查询?

转载 作者:行者123 更新时间:2023-12-01 23:58:01 26 4
gpt4 key购买 nike

一些快速上下文 我正在边栏中创建一个基于月/年的博客存档。我正处于需要显示该月帖子的地步。我需要一些帮助来创建此查询以传递到 Twig 上。

下面是原始问题的链接以及我到目前为止的设置,查询显然不正确(关于这篇文章的性质)并且可以使用一些帮助来充实它。

如果能向我展示如何通过在一个月内为帖子创建正确的查询并将其链接到 twig 来完成这些最后的步骤,我们将不胜感激。

Symfony2 - Setting up a blog archive

到目前为止,这就是我所拥有的。

查询(这部分需要帮助 - 如何设置查询以按月/年检索帖子)

public function getPostsByMonth($year, $month)
{
$qb = $this->createQueryBuilder('b')
->from('Blog', 'b')
->select('b')
->where('created BETWEEN :june AND :july')
->setParameter('june', $june->format('2013-June'))
->setParameter('july', $july->format('2013-July'))
???
}

路线

general_sym_project_archive:
path: /archive/{year}/{month}
defaults: { _controller: GeneralSymProjectBundle:Blog:archive }

Controller

public function archiveAction($year, $month)
{
$em = $this->getDoctrine()->getManager();

$blogs = $em->getRepository('GeneralSymProjectBundle:Blog')
->getPostsByMonth($year, $month);

if (!$blogs) {
throw $this->createNotFoundException('Unable to find blog posts');
}

foreach ($blogs as $post) {
$year = $post->getCreated()->format('Y');
$month = $post->getCreated()->format('F');
$blogPosts[$year][$month][] = $post;
}



return $this->render('GeneralSymProjectBundle:Default:archive.html.twig', array(
'blogPosts' => $blogPosts,
));

Twig(需要按月将帖子链接到此 twig)

<h4>Archives</h4>
<ol class="list-unstyled">
<li><a href="{{ path('general_sym_project_archive', { 'year': '2013', 'month': '07'}) }}">July 2013</a></li>
</ol>

最佳答案

假设您的 created 字段是一个日期时间并且您想要获取给定年份中给定月份的帖子,这应该可行:

public function getPostsByMonth($year, $month)
{
$date = new \DateTime("{$year}-{$month}-01");

$qb = $this->createQueryBuilder('b');
$query = $qb
->where('b.created BETWEEN :start AND :end')
->setParameter('start', $date->format('Y-m-d'))
->setParameter('end', $date->format('Y-m-t'))
;
return $query->getQuery()->getResult();
}

关于symfony - Doctrine2 - 如何按月设置查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22751086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com