質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

6729閲覧

cakephpで今日のデータを取得したい場合

takeshi556

総合スコア90

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2015/06/01 14:22

ハマってしまったので質問させてください。
cakephpで今日のデータを取得したい場合どのようにすればよろしいでしょうか?
以下のようにしますと
Work.timeに入っているデータはY-m-d H:i:s形式のため
$dateの日時と全く同じでないと取得できません。

便利な関数ややり方があるのでしょうか?
どうぞよろしくお願い致します

lang

1//今日の日付 2$date =date('Y-m-d H:i:s',strtotime('now')); 3 4//オプション指定 5$option = array( 6'conditions' => array( 7'Work.time' => $date 8) 9); 10 11//データ取得 12$this->set('works', $this->Work->find('all', $option)); 13

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

lang

1$options = array('conditions' => array('Work.time BETWEEN ? AND ?' => array('2015-06-02 00:00:00', '2015-06-02 23:59:59')));

他にWork.timeにdate_formatでフォーマット変換をかけるやり方もありますが
確かIndexが効かなくなるのでbetweenで。

投稿2015/06/02 01:23

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takeshi556

2015/06/02 11:12

ご返答ありがとうございます。 いただいたコードで無事解決できました。 Cookbookにも探したら似たことが書いてありました。 最終的なコードは以下になりました。 この度はありがとございました。 public function today() { $date =date('Y-m-d H:i:s',strtotime('now')); $start = new DateTime($date); $start->setTime(00, 00); $start->format('Y-m-d H:i:s'); $start = $start->format('Y-m-d H:i:s'); $end = new DateTime($date); $end->setTime(23, 59); $end = $end->format('Y-m-d H:i:s'); $options = array( 'conditions' => array( 'Work.time BETWEEN ? AND ?' => array($start, $end) ) ); $this->set('works', $this->Work->find('all', $options)); }
icham

2015/06/02 14:43

あとdate関数は、引数なければ実行時の時間になります。 strtotimeで渡す必要はありません。また以下のようなフォーマット指定もできます。 $start = date('Y-m-d 00:00:00', ); $end = date('Y-m-d 23:59:59'); DatweTimeオブジェクトを使う必要もないですよ。
takeshi556

2015/06/06 10:01

よく理解せずに書いていました。 ありがとうございます。もう一度勉強してみます。
guest

0

Workテーブルにymdだけのカラムを追加するのが最もスマートですけど
データの量が多いとそうも行かないと思うので
一度全てのデータを取って、その後timeをY-m-dに加工して現在の日時と比較、
一致していれば配列に入れるいうやり方を思いつきました。
もしくは、試していないですけど、

lang

1$date = date('Y-m-d',strtotime('now')); 2$option = array( 3 'conditions' => array( 4 'Work.time' => $date."*", 5 ) 6);

これで動くかもしれません。

投稿2015/06/02 00:36

編集2015/06/02 00:37
Yasha_Wedyue

総合スコア830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takeshi556

2015/06/02 11:09

ご返答ありがとうございます。 一度全てのデータを取って加工するやり方ですが、自分では難しそうでした。 また、いただいたコードですと SQLが WHERE `Work`.`time` = '2015-06-02 19:05:17*' となり取得できませんでした。 この度はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問