成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Laravel 5~嵌套評論的實現(xiàn)

ethernet / 1390人閱讀

摘要:經(jīng)常我們看見評論顯示形式有很多,比如某某,又或者像知乎的收縮式的評論,又或者是嵌套式的評論,那么最一開始也是最常見的就是嵌套式評論,因為這個更加醒目準(zhǔn)備工作設(shè)計三張表,表結(jié)構(gòu)如下層文件一篇文章有

經(jīng)常我們看見評論顯示形式有很多,比如"@"某某,又或者像知乎的收縮式的評論,又或者是嵌套式的評論,那么最一開始也是最常見的就是嵌套式評論,因為這個更加醒目.

準(zhǔn)備工作
1.設(shè)計三張表users,posts,comments,表結(jié)構(gòu)如下:

users

Schema::create("users", function (Blueprint $table) {
    $table->increments("id");
    $table->string("name");
    $table->string("email")->unique();
    $table->string("password");
    $table->rememberToken();
    $table->timestamps();
});

posts

Schema::create("posts", function (Blueprint $table) {
    $table->increments("id");
    $table->string("title");
    $table->integer("user_id")->index();
    $table->text("content");
    $table->timestamps();
});

comments

Schema::create("comments", function (Blueprint $table) {
    $table->increments("id");
    $table->integer("user_id")->index();
    $table->integer("post_id")->index();
    $table->integer("parent_id")->index()->default(0);
    $table->text("body");
    $table->timestamps();
});

2.Model層:
Post.php文件

/**
 * 一篇文章有多個評論
 * @return IlluminateDatabaseEloquentRelationsHasMany
 */
public function comments()
{
    return $this->hasMany(Comment::class);
}

/**
 * 獲取這篇文章的評論以parent_id來分組
 * @return static
 */
public function getComments()
{
    return $this->comments()->with("owner")->get()->groupBy("parent_id");
}

Comments.php文件

/**
 * 這個評論的所屬用戶
 * @return IlluminateDatabaseEloquentRelationsBelongsTo
 */
public function owner()
{
    return $this->belongsTo(User::class, "user_id");
}

/**
 * 這個評論的子評論
 * @return IlluminateDatabaseEloquentRelationsHasMany
 */
public function replies()
{
    return $this->hasMany(Comment::class, "parent_id");
}

邏輯編寫
我們所要實現(xiàn)的嵌套評論其實在我們準(zhǔn)備工作中已經(jīng) 有點思路了,我們首先將一篇文章顯示出來,同時利用文章與評論的一對多關(guān)系,進行顯示所有的評論,但是我們的評論里面涉及到一個字段就是parent_id,這個字段其實非常的特殊,我們利用這個字段來進行分組, 代碼就是上面的return $this->comments()->with("owner")->get()->groupBy("parent_id"),具體的過程如下:

web.php文件

Auth::loginUsingId(1); //用戶id為1的登錄

//顯示文章和相應(yīng)的評論
Route::get("/post/show/{post}", function (AppPost $post) {
    $post->load("comments.owner");
    $comments = $post->getComments();
    $comments["root"] = $comments[""];
    unset($comments[""]);
    return view("posts.show", compact("post", "comments"));
});

//用戶進行評論
Route::post("post/{post}/comments", function (AppPost $post) {
    $post->comments()->create([
        "body" => request("body"),
        "user_id" => Auth::id(),
        "parent_id" => request("parent_id", null),
    ]);
    return back();
});

視圖代碼
視圖方面我們需要實現(xiàn)嵌套,那么隨著用戶互相評論的越來越多的話,那么嵌套的層級也就越多,所以說,我們這里需要使用各小技巧來顯示整個評論,我們使用@include()函數(shù)來顯示,那么我們試圖的結(jié)構(gòu)如下:

 - comments
comments.blade.php
form.blade.php
list.blade.php

 - posts
show.blade.php

代碼如下:
show.blade.php




    
    
    
    


{{$post->title}}

{{$post->content}}


@include("comments.list",["collections"=>$comments["root"]])

留下您的評論

@include("comments.form",["parentId"=>$post->id])

comment.blade.php

{{$comment->owner->name}}:
{{$comment->body}}
@include("comments.form",["parentId"=>$comment->id]) @if(isset($comments[$comment->id])) @include("comments.list",["collections"=>$comments[$comment->id]]) @endif

form.blade.php

id."/comments")}}" accept-charset="UTF-8"> {{csrf_field()}} @if(isset($parentId)) @endif

list.blade.php

@foreach($collections as $comment)
    @include("comments.comment",["comment"=>$comment])
@endforeach

最終效果圖如下

最近在研究laravel,看到一個之前做過的功能,之前寫的比較繁瑣,特記錄下來。
摘自:
https://laravel-china.org/art...
https://laravel-china.org/art...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/29840.html

相關(guān)文章

  • 使用 Baum 嵌套集合模型來實現(xiàn) Laravel 模型無限極分類

    摘要:本文經(jīng)授權(quán)轉(zhuǎn)自社區(qū)使用嵌套集合模型來實現(xiàn)模型的無限極分類說明大家通常都是使用遞歸實現(xiàn)無限極分類,都知道遞歸效率很低,下面推薦一個的擴展包,快速讓你的數(shù)據(jù)模型支持無限極樹狀層級結(jié)構(gòu),并且兼顧效率。 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 使用 Baum 嵌套集合模型來實現(xiàn) Laravel 模型的無限極分類 說明 大家通常都是使用遞歸實現(xiàn)無限極分類,都知道遞歸效率很低,下面推薦一個 Larav...

    superPershing 評論0 收藏0
  • 個人整理, 閱讀過好文章 (每天隨時更新)

    摘要:大家有好的文章可以在評論下面分享出來共同進步本文鏈接數(shù)組使用之道程序員進階學(xué)習(xí)書籍參考指南教你在不使用框架的情況下也能寫出現(xiàn)代化代碼巧用數(shù)組函數(shù)框架中間件實現(xiàn)沒錯,這就是面向?qū)ο缶幊淘O(shè)計模式需要遵循的個基本原則令人困惑的在中使用協(xié)程實現(xiàn)多任 大家有好的文章,可以在評論下面分享出來, 共同進步! 本文github鏈接 php PHP 數(shù)組使用之道 PHP程序員進階學(xué)習(xí)書籍參考指南 教你...

    Chiclaim 評論0 收藏0
  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺管理系統(tǒng),支持手機和端訪問支付寶風(fēng)格的驗證器后臺系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動記錄用戶行為擴展一個項目管理系統(tǒng)根據(jù)生成對應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評論0 收藏0
  • Laravel 5.4 入門系列 8. 文章評論

    摘要:編輯遷移文件我們?yōu)楸砀裉砑恿送怄I,同時生定義了約束,該約束允許刪除父表文章的時候,自動刪除關(guān)聯(lián)的子表評論。關(guān)聯(lián)中文文檔的輔助函數(shù)列表中文文檔 本節(jié)將學(xué)習(xí) Eloquent Relations,表與表之間存在著多種關(guān)系,舉例如下: 一對一:文章與作者 一對多:文章與評論 多對多:標(biāo)簽與文章 文章與評論的一對多關(guān)系 一對多關(guān)系,主要理解兩點: 如何實現(xiàn)一對多關(guān)系 實現(xiàn)了之后能給開發(fā)帶...

    IntMain 評論0 收藏0
  • Laravel 5.4 入門系列 9. 注冊與登錄,用戶關(guān)聯(lián)

    摘要:本節(jié)將實現(xiàn)文章評論與用戶關(guān)聯(lián)的功能。關(guān)系定義首先修改與表,增加字段增加全部回滾并重新執(zhí)行遷移添加用戶表與文章表評論表的一對多關(guān)系添加文章評論表與用戶表的多對一關(guān)系同時,評論表的字段增加。同時,我們還自定義了返回的錯誤信息。 本節(jié)將實現(xiàn)文章、評論與用戶關(guān)聯(lián)的功能。 關(guān)系定義 首先修改 posts 與 comments 表,增加 user_id 字段 /database/migratio...

    smallStone 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<