2016-06-29 65 views
0

是否有任何相当于sql查询的教条?学说querybuilder TO_DAYS

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" 

UPDATE

感谢阿洛克,答案如下

给出10

回答

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

+0

OMG,4个月后我明白如何运行这个 $的currentdate =新的DateTime()时使用EntityRepositories(捂脸) 我有错误; (':currentdate',q.newStatusData)> = 30“) - > setParameter('currentdate',$ currentDate ) - > getResult(); 太多的参数:查询定义了0个参数,并且你绑定了1 –

+0

使用'CURRENT_DATE()' –

+0

thx检查我的更新答案!有用 ! –

相关问题