私は CakePHP を使用してアプリケーションを構築しており、Wordpress ブログ アーカイブのようなものを達成しようとしています。
データベースに次のテーブルがあるとします。
- 投稿
- ID
- 題名
- 体
- 作成した
そして、私は次のような出力が必要です:
- 2013年
- ポスト 1
- ポスト 2
- 等
- 2012年
- ポスト 4
- ポスト 5
- などなど
自分で検索して試してみましたが、残念ながら成功しませんでした よろしくお願いします
私は CakePHP を使用してアプリケーションを構築しており、Wordpress ブログ アーカイブのようなものを達成しようとしています。
データベースに次のテーブルがあるとします。
そして、私は次のような出力が必要です:
自分で検索して試してみましたが、残念ながら成功しませんでした よろしくお願いします
まず、特定の年のすべての投稿を取得する 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)と書くだけです。
上記のコードはテストされていません。何か問題があればお知らせください。