前面已经做一些准备工作,接下来实现博客最重要的部分,展示博客文章列表和博客文章详情,在我的博客应用中,首页要显示最近的博客文章,现在就来实现这部分。

修改控制器

在前面已经定义过路由,首页的展示方法是 PagesController.php控制器的 root()方法控制,现在修改 root方法里面的代码:
app/Http/Controllers/PagesController.php

  1. public function root()
  2. {
  3. $articles = Article::orderBy('created_at','desc')->limit(10)->get();
  4. return view('pages.root',compact('articles'));
  5. }

使用 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 对象提供的方法,提供时间按「年-月-日」形式展示形式。

现在访问首页可以看到显现如下:
image.png