[Laravel] 顯示留言,讓人看到在你的文章回應的外送茶訊息吧

之前做的新增功能,讓我們可以新增一些廢文
如果你忘記我給你連結複習一下
你發了廢文就會有人想跟你吵架,所以我們就要加入留言功能
讓他們可以吵,這樣就可以吉他們賺零用錢
還可以蒐集外送茶資訊,其實這才是主要目的
這邊先就,已經有人留言了,我們該怎麼讓它顯示下手

為了儲存留言,理所當然的我們開一張表來儲存
使用我們之前用過的指令

$ php artisan make:model Comment -m

如此我們會建立一個 model 叫做 Comment 連帶建立 migration檔案
在 migration 中設定欄位
$table->increments('id');
$table->integer('post_id');
$table->string('body');
$table->timestamps();

未來會加上留言者的id,但是目前就先這樣
知道這是哪一篇貼文的留言、留言內容、建立時間
然後就是進行 migration 建立資料表
自己手動加入一些留言吧,假設我丟給 id = 3的貼文幾個留言

接下來我們要從Post Model取得留言
在\app\Post.php中加入新的function comments()
public function comments()
{
    return $this->hasMany(Comment::class);
}

當呼叫這個函數就會返回Comment這個 class

測試一下
在cmd輸入$ php artisan tinker 進入互動模式後
$post = App\Post::find(3);
可以發現回傳了id = 3 的資料回來,因為剛剛我們把留言定義給他
接著執行 $post->comments
呼叫我們剛剛加入的function comments()

哇!剛剛我們的留言都出現了
接下來要處理 \app\Comment.php
加入一個function
public function post()
{
    return $this->belongsTo(Post::class);
}

回傳關聯
如果我們進到 $ php artisan tinker
測試  $c = App\Comment::first() 會先回傳第一筆留言
接著使用 $c 去查詢他所關聯的文章  $c->post
就會回傳所屬的文章內容出來!
於是我們可以從文章到找到所有留言,也可以從留言找到所屬文章

接下來就是在畫面顯示,開啟 \resources\views\posts\show.blade.php
增加留言內容的段落,看起來會像這樣


我們用了 diffForHumans() 來顯示從建立到現在有幾個小時
這也是先前提過屬於 Carbon 中的方法

於是應該可以在指定的文章下方看到之前建立的回應了!
真的是很厲害呢

留言