我现在可以使用Laravel 4.2以档案系统(列表)年份和月份恢复我的文章。
我设法每年和每月检索我的项目没有问题(见下文)
这是我的控制器使用Query builder Laravel
public function index(){
$post_links = DB::table('posts')
->select(DB::raw('YEAR(created_at) year, MONTH(created_at) month, MONTHNAME(created_at) month_name, COUNT(*) post_count'))
->groupBy('year')
->groupBy('month')
->orderBy('year', 'desc')
->orderBy('month', 'desc')
->get();
return View::make('home.index')->with(array(
'post_links'=>$post_links,
));
}
我的观点
<ul id="show-year">
@foreach($post_links as $link)
{{--{{dd($link)}}--}}
{{--Show year--}}
<li>
<a title="" href="#">
<span>
<strong>{{$link->year}}</strong></a> <span class="post-count">{{$link->post_count}}</span><i class="fa fa-arrow-right"></i>
</span>
</li>
</a>
{{--show month--}}
<ul id="show-month">
<li class="month-content">
<a href="">
<span>
<strong>{{$link->month_name}}</strong>
</span>
</a>
</li>
</ul>
</li>
@endforeach
</ul>
我几年和几个月都恢复了我的数据,但每个月都会以这种方式为她增加一年
2015(21) - 五月(2) - 四月(3) - 三月(5) - 二月(1) - 一月(10) 2016(10) - 十二月(6) - 十一月(4)
我不明白为什么它不会在同一年对我进行分组,并且每次每个月都有一个新的年份,我就会产生这种情况。
感谢您的帮助。
答案 0 :(得分:0)
为了在某种导航面板中生成链接,您可以在数据库端执行大部分处理,而不是使用像这样的查询获取所有博客帖子记录
SELECT YEAR(created_at) year,
MONTH(created_at) month,
MONTHNAME(created_at) month_name,
COUNT(*) post_count
FROM post
GROUP BY year, MONTH(created_at)
ORDER BY year DESC, month DESC;
输出:
| YEAR | MONTH | MONTH_NAME | POST_COUNT |
------------------------------------------
| 2013 | 5 | May | 5 |
| 2013 | 4 | April | 3 |
| 2013 | 3 | March | 4 |
| 2013 | 2 | February | 3 |
| 2013 | 1 | January | 2 |
| 2012 | 12 | December | 2 |
| 2012 | 11 | November | 3 |
像这段代码
$links = DB::table('post')
->select(DB::raw('YEAR(created_at) year, MONTH(created_at) month, MONTHNAME(created_at) month_name, COUNT(*) post_count'))
->groupBy('year')
->groupBy('month')
->orderBy('yea`enter code here`r', 'desc')
->orderBy('month', 'desc')
->get();
原始解决方案是here