2016-05-25 14 views
1

私はZendFramework2にあり、doctrine2を使用しています。今日から次または過去30日間のすべてのレコードを検索

今日のDateTimeから取引に関連する次または過去30日間のすべてのレコードを検索したいと考えています。

ここで私はこののstrtotime機能を発見したいくつかの参照から、私の教義のクエリとコードが、私はsendAt変数でのDateTimeオブジェクトを持って、

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

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

しかし、それは私のために働いていませんでした。

これを書くにはどうすればよいですか?

+0

'エコー$ sendAt->( "+ 30日")を変更 - >フォーマット(」 Ymd h:i:s '); ' – splash58

+0

コメントありがとう、私は2つの日付の間にレコードを探したい。私はこれがおそらく私にデータベースの日付から30日の日付しか与えないと思う。 @スプラッシュ58。 –

答えて

0

少し検索した後、質問ビルダーが私のために働いた。次の30日間

、過去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(); 

$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(); 
関連する問題