简化你的关注与点赞 - Laravel Follow & Vote
本文主要介绍两个包:
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 协议》,转载必须注明作者和本文链接
推荐文章: