【发布时间】:2016-01-11 00:48:21
【问题描述】:
我是 Laravel 的新手,我已经为此苦苦挣扎了太久,尝试搜索 SO 和 google 以获取信息,但无法解决此问题。
我正在创建博客,需要制作某种导航/存档来显示年份和月份以及每年和每个月份有多少博客帖子。通过点击那些年/月,我会在不同的视图上显示该时间段内的帖子。
我希望它们像这样显示在视图中:
2015 (10)
January(3)
February(3)
March(3)
April(1)
2014 (2)
May(1)
June(1)
等等。
我得到这样的数据库查询:
$links = \DB::table('posts')
->select(\DB::raw('YEAR(created_at) year, MONTH(created_at) month, MONTHNAME(created_at) month_name, COUNT(*) id'))
->where('active',1)
->groupBy('year')
->groupBy('month')
->orderBy('year', 'desc')
->orderBy('month', 'desc')
->get();
这给了我这样的表格:
array:3 [
0 => {#275
+"year": "2015"
+"month": "10"
+"month_name": "October"
+"id": "3"
}
1 => {#274
+"year": "2015"
+"month": "9"
+"month_name": "September"
+"id": "1"
}
2 => {#273
+"year": "2014"
+"month": "8"
+"month_name": "August"
+"id": "1"
}
]
我怎样才能像我描述的那样在我的视图上打印它? 如果我在这样的视图中遍历数组:
@foreach($links as $link)
<h3 class="text-uppercase"><a href="{{ url('blog/'.$link->year) }}">{{ $link->year }}</a></h3>
<p><small class="blog_date"><a href="{{ url('blog/'.$link->year.'/'.$link->month) }}">{{ $link->month_name }} ({{ $link->id }}) </a></small>
@endforeach
我尝试在我的控制器中使用 foreach-loop 从 DB-results 创建另一个数组,其中结构将是正确的形式,我可以使用 foreach 在视图上打印它,但无法让它工作。
我知道我已经接近解决方案,但我仍在学习。请有人告诉我这是最好的方法。
【问题讨论】:
标签: arrays database laravel view