-1

私は CakePHP を使用してアプリケーションを構築しており、Wordpress ブログ アーカイブのようなものを達成しようとしています。

データベースに次のテーブルがあるとします。

  • 投稿
    • ID
    • 題名
    • 作成した

そして、私は次のような出力が必要です:

  • 2013年
    • ポスト 1
    • ポスト 2
  • 2012年
    • ポスト 4
    • ポスト 5
    • などなど

自分で検索して試してみましたが、残念ながら成功しませんでした よろしくお願いします

4

2 に答える 2

1

まず、特定の年のすべての投稿を取得する Post モデル内にメソッドを作成できます。

//Inside Model/Post.php

public function getPostsByYear($year) {

$date1 = new DateTime($year.'-01-01 00:00:00');
$date2 = new DateTime($year.'-12-31 23:59:59');

$posts = $this->find('all' , array(
    'conditions' => array(
        'Post.created BETWEEN ? AND ?' => array($date1,$date2)
     )
    ));

    return $posts
}

次に、PostsController の目的のアクション内で、目的の最初の年 (私の場合は 2012 年を選択) から現在の年まで繰り返し、次のようにgetPostsByYear()メソッドを複数回呼び出します。

//Inside Controller/PostsController.php

public function somePostAction() {

$posts = new Array();
$currentYear = date("Y");

    for($year = 2012 ; $year<=$currentYear ; $year++) {
        $posts[$year] = $this->Post->getPostsByYear($year);
    }

$this->set('posts' , $posts);

}

この方法では、たとえば、2012 年のすべての投稿が$posts[2012]配列に格納されます。その構造を調べたい場合は、debug($posts)と書くだけです。

上記のコードはテストされていません。何か問題があればお知らせください。

于 2013-07-30T17:20:19.590 に答える