CakePHP

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

CakePHP

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

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')));
    }

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

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

スポンサーリンク
記事を書いた人

システムえんじにゃー🐈
趣味はエレキギター、自転車など。作曲したい。
World of Warshipsやってます。
記事に関する質問はお気軽にどうぞ。

surface0 (さーふぇす)をフォローする

コメント

タイトルとURLをコピーしました