[CakePHP] 年別あるいは年月別に対応するSQL条件式を生成する

  • このエントリーをはてなブックマークに追加

MTのブログなどではよく月別、年別で記事アーカイブのインデックスをディレクトリ(例:/post/2010/12/)で分けていると思いますが、それと同様に対応する簡単な方法。
今頃CakePHP1.2RC2で検証。
コントローラ内でTimeヘルパーを使います。

[php]
class PostsController extends AppController {

function index($year = null, $month = null) {
if (!empty($year)) {
App::import(‘Helper’, ‘Time’);
$time = new TimeHelper();
$begin = mktime(0, 0, 0, $month ? $month : 1, 1, $year);
$end = mktime(0, 0, 0, $month ? $month + 1 : 1, 0, $month ? $year : $year + 1);
$conditions = array($time->daysAsSql($begin, $end, ‘Post.date’));
}
$this->set(‘posts’, $this->Post->find(‘all’, compact(‘conditions’)));
}
[/php]

あら、簡単。日付指定なし、年だけ指定、年月指定のいずれにも対応できます。
これは結構多様するんじゃないかと思います。

問題ありましたら、ビシバシどぞ!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。




コメントを残す