本文主要介绍两个包: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