成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel 用戶之間關(guān)注

Aceyclee / 417人閱讀

摘要:介紹有關(guān)用戶之間的相互關(guān)注這樣的應(yīng)用場(chǎng)景還是很常見的每個(gè)平臺(tái)都會(huì)有這樣類似的需求就比如和知乎當(dāng)然還有最熟悉的每個(gè)人可以有關(guān)注者和粉絲建立模型表這里我們?nèi)ソ⒁粋€(gè)中間表可以想象得到的是這張表里包含了兩個(gè)用戶的我們可以去創(chuàng)建一個(gè)創(chuàng)建完我們的表

介紹

有關(guān)用戶之間的相互關(guān)注這樣的應(yīng)用場(chǎng)景還是很常見的 每個(gè)平臺(tái)都會(huì)有這樣類似的需求 就比如Segmentfault知乎

當(dāng)然還有最熟悉的Github每個(gè)人可以有關(guān)注者和粉絲

建立模型表

這里我們?nèi)ソ⒁粋€(gè)中間表 可以想象得到的是這張表里包含了兩個(gè)用戶的id 我們可以去創(chuàng)建一個(gè)Model

$ php artisan make:model Follow -m

創(chuàng)建完我們的表之后 我們?nèi)ネ晟葡卤淼淖侄涡畔?/p>

Schema::create("follows", function (Blueprint $table) {
    $table->increments("id");
    $table->integer("follower_id")->unsigned()->index();
    $table->integer("followed_id")->unsigned()->index();
    $table->timestamps();
});

定義完畢之后去遷移下數(shù)據(jù)表

$ php artisan migrate
定義模型方法

寫完我們的數(shù)據(jù)表 我們是將關(guān)注的信息存放在follows這個(gè)數(shù)據(jù)表的 因?yàn)檫@是用戶與用戶之間的關(guān)聯(lián)
并不是之前的用戶與帖子或文章這樣的模型關(guān)聯(lián) 其實(shí)實(shí)現(xiàn)的道理是一樣的

我們就可以在User Model里去定義對(duì)應(yīng)的關(guān)聯(lián)

//用戶關(guān)注
public function following()
{
    return $this->belongsToMany(self::class,"follows","follower_id","followed_id")->withTimestamps();
}

//用戶的粉絲
public function followers()
{
    return $this->belongsToMany(self::class,"follows","followed_id","follower_id")->withTimestamps();
}

//關(guān)注用戶
public function followThisUser($user)
{
    return $this->following()->toggle($user);
}

因?yàn)橛脩襞c用戶之間也是一種多對(duì)多的關(guān)系 所以我將關(guān)注用戶的方法寫成followThisUser

定義方法路由

接下來(lái)就可以去定義相應(yīng)的方法路由了 這里為了使用方便我定義了一個(gè)控制器

$ php artisan make:controller FollowController

首先我們?nèi)ザx一下我們的路由

Route::post("/user/follow","FollowersController@follow");

如果用戶去關(guān)注另一個(gè)用戶的話 只需要去執(zhí)行follow方法 而這個(gè)方法也是一個(gè)toggle式的操作

當(dāng)然我們?cè)趫?zhí)行

$follow = $user->followThisUser($userId)

這個(gè)方法是他會(huì)返回一個(gè)數(shù)組對(duì)象 如果是執(zhí)行attach方法的話

那么$follow["attached"]$userId的值

如果這樣的話我們就可以知道followThis這個(gè)方法到底是執(zhí)行了attach還是detach方法了
那么接著我們就可以去增加一個(gè)用戶的粉絲數(shù)或者去通知用戶發(fā)送一個(gè)消息這樣的操作了

所以你可以在執(zhí)行完成之后的邏輯是這樣的

$follow = user()->followThisUser($userId);
//如果用戶關(guān)注了另一個(gè)用戶
if(count($followed["attached"])>0){
    //可以去通知用戶 修改用戶的關(guān)注人數(shù)等數(shù)據(jù)
    return response()->json(["followed" => true]);
}

當(dāng)然如果我們需要拿到一個(gè)用戶的關(guān)注的人和粉絲的話 可以去執(zhí)行

$user->following 

以及

$user->followers

這樣的話我們就可以拿到對(duì)應(yīng)的用戶數(shù)據(jù)信息了

其實(shí)整個(gè)實(shí)現(xiàn)起來(lái)就和我們對(duì)一篇帖子進(jìn)行點(diǎn)贊一樣 只不過(guò)對(duì)象變成了用戶與用戶之間

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22599.html

相關(guān)文章

  • 簡(jiǎn)化你的關(guān)注與點(diǎn)贊 - Laravel Follow & Vote

    摘要:廢話不多說(shuō),下面我簡(jiǎn)單介紹一下兩個(gè)包的用法吧。還有的是這里使用了,如何去理解以及更好地使用最后,當(dāng)然是要感謝超哥。經(jīng)討論更名為更名為更名為更名為 showImg(https://pigjian.com/storage/post_img/2017-04-12/follow-vote.png); 本文主要介紹兩個(gè)包: Laravel - Follow : https://github.co...

    CodeSheep 評(píng)論0 收藏0
  • Laravel深入學(xué)習(xí)1 - 依賴注入

    摘要:然而,我們需要注意的是僅是軟件設(shè)計(jì)模式依賴注入的一種便利的實(shí)現(xiàn)形式。容器本身不是依賴注入的必要條件,在框架他只是讓其變得更加簡(jiǎn)便。首先,讓我們探索下為什么依賴注入是有益的。繼續(xù)深入讓我們通過(guò)另一個(gè)示例來(lái)加深對(duì)依賴注入的理解。 聲明:本文并非博主原創(chuàng),而是來(lái)自對(duì)《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當(dāng)然也不是原汁原味的翻譯,能保證9...

    sunsmell 評(píng)論0 收藏0
  • Laravel最佳實(shí)踐--事件驅(qū)動(dòng)編程

    摘要:事件驅(qū)動(dòng)編程是圖形用戶界面和其他應(yīng)用程序例如應(yīng)用程序中使用的主要范例,用于執(zhí)行某些操作來(lái)響應(yīng)用戶輸入。我們來(lái)看一下事件驅(qū)動(dòng)編程帶來(lái)的收益。現(xiàn)在讓我們看看采用事件驅(qū)動(dòng)編程方法如何實(shí)現(xiàn)上述相同的功能。 在這篇文章中我們將了解到什么是事件驅(qū)動(dòng)編程以及在Laravel中如何開始構(gòu)建一個(gè)事件驅(qū)動(dòng)應(yīng)用,同時(shí)我們還將看到如何通過(guò)事件驅(qū)動(dòng)編程來(lái)對(duì)應(yīng)用程序的邏輯進(jìn)行解耦。 在開始之前,先說(shuō)明一下這篇文章...

    Drummor 評(píng)論0 收藏0
  • Laravel 5.6 正式發(fā)布(文檔翻譯工作將在春節(jié)后啟動(dòng))

    摘要:默認(rèn)的應(yīng)用哈希驅(qū)動(dòng)通過(guò)新增的配置文件來(lái)控制。你可以在我們的文章中學(xué)習(xí)到更多的關(guān)于密碼哈希算法的內(nèi)容方法在類中引入了兩個(gè)新的生成唯一的方法引入了兩個(gè)新的方法來(lái)生成。 showImg(https://segmentfault.com/img/remote/1460000013229904?w=1400&h=708); Laravel 5.6 Laravel 5.6正式成為laravel框架...

    Kross 評(píng)論0 收藏0
  • SegmentFault 社區(qū)訪談 | mcfog:自由進(jìn)出 Coding && A

    摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡(jiǎn)單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因?yàn)樵O(shè)計(jì)獅顏值同學(xué)也安利了這部。劇情簡(jiǎn)介在獨(dú)身又勞累的小林劃重點(diǎn)一名程序員身邊突然出現(xiàn)的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...

    neroneroffy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<