本文主要介紹兩個包:php
Laravel - Follow : https://github.com/overtrue/laravel-followhtml
Laravel - Vote : https://github.com/jcc/laravel-votelaravel
你會疑惑這兩個包有什麼用的呢?固然如標題所說,簡化你關注和點贊功能,Laravel - Follow 用於關注功能,Laravel - Vote 用於點贊功能。git
若是你看了代碼,你會發現兩個包的代碼基本上是一致的,當要注意,兩個包的應用場景是不同的。github
Laravel - Follow 以前的版本只支持用戶關注,固然最近也作了一些改造工做,實現了多種情景下的應用,如:專欄關注、用戶關注等情景。bash
固然,Laravel - Vote 也支持多種情景的應用,如:文章點贊、評論回覆點贊等。廢話很少說,下面我簡單介紹一下兩個包的用法吧。app
Laravel Followcomposer
使用 composer
安裝包:ide
composer require overtrue/laravel-follow -vvv
添加服務提供者到 config/app.php
下:post
Overtrue\LaravelFollow\FollowServiceProvider::class
發佈遷移文件:
php artisan vendor:publish --provider="Overtrue\LaravelFollow\FollowServiceProvider" --tag="migrations"
Laravel Vote
使用 composer
安裝包:
composer require jcc/laravel-vote -vvv
添加服務提供者到 config/app.php
下:
Jcc\LaravelVote\VoteServiceProvider::class
發佈遷移文件:
php artisan vendor:publish --provider="Jcc\LaravelVote\VoteServiceProvider" --tag="migrations"
固然用法也是很是的簡單,你無需顧慮它們間的關聯關係。
應用場景:用戶關注用戶
首先,在 User
模型中引入 CanFollow
以及 CanBeFollowed
:
use Overtrue\LaravelFollow\CanFollow; use Overtrue\LaravelFollow\CanBeFollowed; class User extends Model { use CanFollow, CanBeFollowed; }
關注用戶:
$user->follow(1); // or $user->follow([1,2,3,4]); // or $target = User::find(2); $user->follow($target);
取消關注用戶:
$user->unfollow(1); // or $user->unfollow([1,2,3,4]); // or $target = User::find(2); $user->unfollow($target);
獲取用戶的關注者:
$user->followers();
獲取用戶關注的用戶:
$user->followings();
判斷用戶是否關注了:
$user->isFollowing(1); // or $target = User::find(1); $user->isFollowing($target);
判斷用戶是否被關注了:
$user->isFollowedBy(1);
應用場景:用戶點贊文章
只需在 User
模型中引入 Vote
,在 Post
模型引入 CanBeVoted
:
User.php
use Jcc\LaravelVote\Vote; class User extends Model { use Vote; }
Post.php
use Jcc\LaravelVote\CanBeVoted; class Post extends Model { use CanBeVoted; }
針對 User.php
的操做
用戶點贊文章:
$post = Post::find(1); $user->upVote($post);
用戶取消點贊文章:
$post = Post::find(1); $user->cancelVote($post);
獲取用戶已點讚的記錄:
$user->votedItems();
判斷是否已點贊:
$post = Post::find(1); $user->hasVoted($post);
針對文章的操做
獲取全部點讚的用戶:
$post->voters();
判斷用戶是否有點贊:
$post->isVotedBy(1);
至此,你能夠愉快使用這兩個包,固然,你須要按照你所需的應用場景使用,而不是亂用(Follow 當成 Vote 使用等)。還有的是這裏使用了 Trait
,如何去理解以及更好地使用 Trait — By Overtrue
最後,固然是要感謝超哥 overtrue 。
經討論
Laravel Follow
FollowTrait 改名爲 CanFollow
FollowerTrait 改名爲 CanBeFollowedLaravel VoteVoteTrait 改名爲 VoteVoterTrait 改名爲 CanBeVoted