php - PHP Laravel如何将日期数据分组为月份并添加标题
问题描述
我正在构建一个小型Laravel
应用程序,我想在其中显示按月分组的特定版本。像这样的东西:
January
11.1 - blabla
more blablabla the same day
15.1 - blablabla
February
05.2 - blabla
etc...
所以,在我的控制器中,我只是这样做:
public function index() {
$releases = Release::orderBy('release_date', 'asc')->get();
return view('pages.index')->with('releases', $releases);
}
在我的刀片视图文件中,我浏览了数据:
@foreach ($releases as $release)
<div>
<p>
<span>{{ \Carbon\Carbon::parse($release->release_date)->format('d. M')}}</span>
<span>{{$release->artist}} - {{$release->album_title}} </span>
</p>
</div>
@endforeach
这为我提供了正确的数据,例如数据库条目列表,但如前所述,我想按月对它们进行分组,并为每个月添加一个标题。我怎样才能做到这一点?
如果这很重要,我正在使用Laravel 5.5
...
解决方案
你可以这样做:
表:发布
id | released_at | bla_details | month_header_id
表:month_headers
id | month(specific length int) | year(specific length int) | header
型号:Release.php
public function month_header()
{
return $this->belongsTo('App\Models\Month');
}
模型:MonthHeader.php
public function releases()
{
return $this->hasMany('App\Models\Release');
}
助手:getMonthName($integer)
控制器:TempController.php
public function temp()
{
$response['month_headers'] = MonthHeader::all();
return view('tempView', $response);
}
刀片视图:tempView.blade.php
@foreach($month_headers as $header)
{{getMonthName($header->month)." (".$header->header.")"}}
<ul>
@foreach($month_headers->releases() as $release)
<li>{{date('d.m', strtotime($release->released_at))." - ".$release->bla_details}}</li>
@endforeach
</ul>
@endforeach
查看输出
一月(一月标题)
- 11.1 - 废话
- 15.1 - 废话
二月(二月标题)
- 05.2 - 废话
- 06.2 - 废话
ETC...
推荐阅读
- c++ - 为什么我们不能从由 streambuf 迭代器构造的字符串转换为基本字符串?
- c# - 创建 IEnumerable
并向其中添加项目 - javascript - Highcharts“同步图表”模块不会从本地放置的“activity.json”文件加载数据
- asp.net - 当我尝试使用 IdentityDbContext 查询时,为什么看不到所有 AspNetUsers 表列?
- anaconda - 无法激活 Conda 环境
- tm - R tm 包:无法删除特殊字符
- php - PHP Laravel 视图 json
- laravel - 将使用 LaraDock 构建的 Laravel 应用程序部署到 Heroku
- reactjs - 子组件未呈现
- react-native - 流不接受在 ref 上调用的方法