CakePHP3 今日のデータを取得する

PHP

なんかちょいちょいつまづいちゃったので、書いておきます。

最終的には、下記のように書けば、Offers.delivery_dateが本日のデータを取得できます。

 $query = $this->Offers->find()->contain(['Deliveries'])
 			->where(['Offers.winner_id' => $user_id,
 				'Offers.delivery_date' => new \DateTime('today')])
 			->limit(50);

しかし、最初は下記のようにやってたんですよ。

 $query = $this->Offers->find()->contain(['Deliveries'])
 			->where(['Offers.winner_id' => $user_id,
 				'Offers.delivery_date > ' => DATE_SUB(NOW(), INTERVAL 1 DAY)])
 			->limit(50);

しかし、これだと、下記のようなSQLになってしまい、シングルクォートがついてしまい、本日のデータを取得できません。[sad]

 SELECT 
  Offers.* 
 FROM 
  offers Offers 
 WHERE 
  (
    Offers.winner_id = '99' 
    AND Offers.delivery_date > ' DATE_SUB(NOW(), INTERVAL 1 DAY)'
  )  
 LIMIT 
  50

また、最初の例だと、普通は

 'Offers.delivery_date' => new DateTime('today')

だと思うんですが、それだと下記のエラーが出ます。

 Class 'App\Controller\Component\DateTime' not found

http://stackoverflow.com/questions/29500225/cakephp3-class-datetime-not-found

カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です