前面已经做一些准备工作,接下来实现博客最重要的部分,展示博客文章列表和博客文章详情,在我的博客应用中,首页要显示最近的博客文章,现在就来实现这部分。
修改控制器
在前面已经定义过路由,首页的展示方法是 PagesController.php
控制器的 root()
方法控制,现在修改 root
方法里面的代码:app/Http/Controllers/PagesController.php
。
public function root()
{
$articles = Article::orderBy('created_at','desc')->limit(10)->get();
return view('pages.root',compact('articles'));
}
使用 Eloquent 文章模型提供的 get
方法检索查询结果,在取出数据之前,使用 Eloquent 模型提供的 orderBy
方法,通过指定字段名和排序方式来对文章进行排序,这里将所有文章按创建时间 created_at
对文章进行降序 desc
排序,让新创建的文章靠前。
然后,使用 limit
方法限制取出数据,这里只取 10 条数据。
在将文章数据取出之后,与 page.root
视图进行绑定,将文章数据 $article
通过compact
方法转化为一个关联数组,并作为第二个参数传递给 view
方法,将数据与视图进行绑定。
修改首页视图
打开 root.blade.php
视图文件,修改最新区域为如下内容:
.
.
.
<div class="box">
<h2 class="title is-5">最新文章</h2>
<hr class="mt-1 mb-3">
@foreach($articles as $key=>$value)
<div class="box is-flex">
<time class="mr-2">{{$value->created_at->toDateString()}}</time>
<a class="is-flex" href="" title="{{$value->title}}">
<span>{{$value->title}}</span>
</a>
</div>
@endforeach
</div>
.
.
.
使用 @foreach
的方法将 10 条文章数据逐个输出,并在页面上显示文章创建日期和文章标题。
这里使用到了 toDateString
方法:
$value->created_at->toDateString()
Carbon 是 PHP 知名的日期和时间操作扩展,Laravel 框架中使用此扩展来处理时间、日期相关的操作。toDateString
是 Carbon 对象提供的方法,提供时间按「年-月-日」形式展示形式。
现在访问首页可以看到显现如下: