查找从今天到未来或过去 30 天的所有记录

Key*_*r K 4 php datetime doctrine-orm zend-framework2

我在 ZendFramework2 上并使用doctrine2。

我想查找从今天的日期时间到下一个或过去 30 天与交易相关的所有记录。

这是我的学说查询和代码,

$emailRepo = $em->getRepository('App\Entity\Email')->findBy(['deal' => $deal]);
foreach ($emailRepo as $email) {
            $sendAt = $email->getSendAt();
        }
Run Code Online (Sandbox Code Playgroud)

我在 sendAt 变量中有DateTime对象,

从一些参考文献中我找到了这个strtotime函数。

$data = date('Y-m-d h:i:s', strtotime("+30 days"));
$data = date('Y-m-d h:i:s', strtotime("-30 days"));
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用。

正确的写法是什么?

Key*_*r K 6

经过一番搜索后,查询生成器对我有用。

接下来的 30 天,

$date = date('Y-m-d h:i:s', strtotime("+30 days"))

$sendAt = $em->getRepository('App\Entity\Email')
            ->createQueryBuilder('e')
            ->select('e')
            ->where('e.sendAt BETWEEN :today AND :n30days')
            ->setParameter('today', date('Y-m-d h:i:s'))
            ->setParameter('n30days', $date)
            ->getQuery()
            ->getArrayResult();
Run Code Online (Sandbox Code Playgroud)

过去 30 天,

$date = date('Y-m-d h:i:s', strtotime("-30 days"))

$sendAt = $em->getRepository('App\Entity\Email')
            ->createQueryBuilder('e')
            ->select('e')
            ->where('e.sendAt BETWEEN :n30days AND :today')
            ->setParameter('today', date('Y-m-d h:i:s'))
            ->setParameter('n30days', $date)
            ->getQuery()
            ->getArrayResult();
Run Code Online (Sandbox Code Playgroud)