スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[cakePHP]日付、日付日時(date,datetime)の範囲検索

範囲検索(FromTo検索)の条件式と、Find時の条件の書き方の一例をあげます。
この時の条件として、
・送信されたフォームデータの名前の規則が「~_from」と「~_to」の2つがセットであること
例えば $data['モデル名']['create'] の値が "2012-06-25~2012-06-26"であるなら、
explode()を利用して
//分離したデータを改めて_fromと_toの形で登録する
$vals = explode("~",$data['モデル名']['create']);
array_push($data,$data['モデル名']['create_from'],$data['モデル名']['create_to']);

のようにすることでfromtoのデータを作成した形です。

・データの形は3パターンで、範囲検索・前方検索・後方検索であること
範囲検索は"2012-06-25~2012-06-26"の形、
前方検索は"~2012-06-26"の形、
後方検索は"2012-06-25~"の形です。

以上を満たしたうえで下記のような分岐が行えます。
//Modelはモデル名、ooooは各フォーム名に合わせて変更してください
if((!empty($_datas['Model']['oooo_from'])) && (!empty($_datas['Model']['oooo_to']))){
$conditions[] = array('Model.created BETWEEN ? AND ?' => array($_datas['Model']['oooo_from'] . ' 00:00:00'
,$_datas['Model']['oooo_to'] . ' 23:59:59'));
}
else if((!empty($_datas['Model']['oooo_from'])) && (empty($_datas['Model']['oooo_to']))){
$conditions[] = array('Model.created >=' => ' ' . $_datas['Model']['oooo_from'] . ' 00:00:00');
}
else if((!empty($_datas['Model']['oooo_to'])) && (empty($_datas['Model']['oooo_from']))){
$conditions[] = array('Model.created <=' => ' ' . $_datas['Model']['oooo_to'] . ' 23:59:59');
}
このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。