本文主要介绍两个包:
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。