本文主要介紹兩個包:
Laravel - Follow : https://github.com/overtrue/laravel-follow
Laravel - Vote : https://github.com/jcc/laravel-vote
你會疑惑這兩個包有什麼用的呢?當然如標題所說,簡化你關注和點贊功能,Laravel - Follow 用於關注功能,Laravel - Vote 用於點贊功能。
如果你看了程式碼,你會發現兩個包的程式碼基本上是一致的,當要注意,兩個包的應用場景是不一樣的。
Laravel - Follow 之前的版本只支援使用者關注,當然最近也做了一些改造工作,實現了多種情景下的應用,如:專欄關注、使用者關注等情景。
當然,Laravel - Vote 也支援多種情景的應用,如:文章點贊、評論回覆點贊等。廢話不多說,下面我簡單介紹一下兩個包的用法吧。
安裝
Laravel Follow
使用 composer
安裝包:
composer require overtrue/laravel-follow -vvv
新增服務提供者到 config/app.php
下:
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"
用法
當然用法也是非常的簡單,你無需顧慮它們間的關聯關係。
Laravel Follow
應用場景:使用者關注使用者
首先,在 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);
Laravel Vote
應用場景:使用者點贊文章
只需在 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 Vote
VoteTrait 更名為 Vote
VoterTrait 更名為 CanBeVoted
二次討論
首先感謝 @iVanilla。
Laravel Vote
中的 Vote
是投票、表決的意思,那麼投票、表決,有贊同當然也有反對。
So Laravel Vote v1.1.0 做了如下的改變,讓此包定位更明確:
- 增加一個欄位
type
(區分贊同、反對型別) - 增加如下方法:
- downVote() —— 投反對票
- hasUpVoted() —— 判斷是否有贊同票
- hasDownVoted() —— 判斷是否有反對票
- countUpVoters() —— 計算贊同票數
- countDownVoters() —— 計算反對票數
- countVoters() —— 計算所有票數
詳細用法請看 Laravel-vote 的 README.md
本作品採用《CC 協議》,轉載必須註明作者和本文連結