Doctrine querybuilder TO_DAYS

时间:2016-06-29 11:14:06

标签: php symfony doctrine-orm doctrine

sql查询的学说是否有任何等价物?

SELECT something FROM tbl_name
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

实体已

/**
* @var \DateTime
* @ORM\Column(type="datetime",nullable=true)
*/
protected $newStatusData;

所以,我需要获得条件

的所有记录
"nowDate - newStatusData =< 30 days"

更新

感谢Alok,回答如下:

namespace AppBundle\Entity;

use Doctrine\ORM\EntityRepository;

class QuestRepository extends EntityRepository
{
    function  getNewQuests(){
        $query = $this->getEntityManager()
            ->createQuery('SELECT q FROM AppBundle:Quest q WHERE DATE_DIFF(CURRENT_DATE() , q.newStatusData) >= 30');
        $result = $query->getResult();
        return $result;
    }
}

1 个答案:

答案 0 :(得分:2)

您可能正在寻找DATE_DIFF() DQL功能。它计算给定日期之间的天数差异。

它接受两个日期的参数。

所以你可以查询这样的数据,

<?php
    $result=$this->getEntityManager()
            ->createQuery("SELECT EN from Bundle:EntityName WHERE DATE_DIFF(CURRENT_DATE(),EN.newStatusData)>=30")
            ->getResult();
?>

CURRENT_DATE()会返回当前日期。

http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#dql-functions