2016-06-29 66 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檢查我的更新答案!有用 ! –

相關問題