我正在使用 cakePHP 构建和应用程序,并且正在尝试实现类似 Wordpress 博客存档的内容。
假设我的数据库中有这张表:
- 帖子
- ID
- 标题
- 身体
- 创建
我想要这样的输出:
- 2013
- 帖子 1
- 帖子 2
- ETC
- 2012
- 帖子 4
- 发布 5
- 等等等等
我自己搜索并尝试过,但不幸的是没有成功提前谢谢
我正在使用 cakePHP 构建和应用程序,并且正在尝试实现类似 Wordpress 博客存档的内容。
假设我的数据库中有这张表:
我想要这样的输出:
我自己搜索并尝试过,但不幸的是没有成功提前谢谢
实际上有点过时了,大部分代码应该被重构到模型中,但这正是这样做的。
https://github.com/CakeDC/utils/blob/develop/Controller/Component/ArchiveComponent.php
首先,您可以在 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)即可。
提醒一下,上面的代码未经测试。让我知道是否有任何问题。