当前位置: 首页 > 后端技术 > PHP

简化你的关注和点赞-LaravelFollow&Vote

时间:2023-03-29 20:54:06 PHP

本文主要介绍两个包:laravel-vote你可能想知道这两个包有什么用?当然,正如标题所说,简化你的follow和like功能,Laravel-Follow用于follow功能,Laravel-Vote用于like功能。看代码会发现两个包的代码基本一致,但是需要注意的是两个包的应用场景是不一样的。之前版本的Laravel-Follow只支持用户关注。当然最近也做了一些改造工作,实现了各种场景的应用,比如关注栏目,关注用户。当然Laravel-Vote也支持多种场景的应用,比如:文章点赞,评论回复点赞等等,废话不多说,简单介绍一下这两个包的用法。使用composer安装包安装LaravelFollow:composerrequireovertrue/laravel-follow-vvv在config/app.php中添加服务提供者:Overtrue\LaravelFollow\FollowServiceProvider::class发布迁移文件:phpartisanvendor:publish--provider="Overtrue\LaravelFollow\FollowServiceProvider"--tag="migrations"LaravelVote使用composer安装包:composerrequirejcc/laravel-vote-vvv在config/app.php中添加服务提供者:Jcc\LaravelVote\VoteServiceProvider::class发布迁移文件:phpartisanvendor:publish--provider="Jcc\LaravelVote\VoteServiceProvider"--tag="migrations"用法当然用法也很简单,大家不用纠结它们之间的关系。LaravelFollow应用场景:用户关注用户首先在User模型中引入CanFollow和CanBeFollowed:使用Overtrue\LaravelFollow\CanFollow;使用Overtrue\LaravelFollow\CanBeFollowed;classUserextendsModel{useCanFollow,CanBeFollowed;}关注用户:$user->follow(1);//或$user->follow([1,2,3,4]);//或$target=User::find(2);$user->follow($target);取消关注用户:$user->unfollow(1);//或$user->unfollow([1,2,3,4]);//或$target=User::find(2);$user->取消关注($目标);获取用户的关注者:$user->followers();获取用户关注的用户:$user->followings();判断用户是否关注:$user->isFollowing(1);//或$target=User::find(1);$user->isFollowing($target);判断用户是否被关注:$user->isFollowedBy(1);LaravelVote应用场景:用户只喜欢文章Vote需要在User模型中引入,在Post模型中引入CanBeVoted:User.phpuseJcc\LaravelVote\Vote;classUserextendsModel{useVote;}Post.phpuseJcc\LaravelVote\CanBeVoted;classPostextendsModel{useCanBeVoted;}对User.php的操作,用户点赞文章:$post=Post::find(1);$user->upVote($post);用户取消文章:$post=Post::find(1);$用户->取消投票($post);获取用户投票的记录:$user->votedItems();判断是否被投票:$post=Post::find(1);$user->hasVoted($post);获取所有对文章点赞的用户:$post->voters();判断用户是否喜欢:$post->isVotedBy(1);至此,你就可以愉快的使用这两个包了,当然你需要根据自己需要的应用场景来使用,不能乱用(Follow用作Vote等),这里使用Trait,如何更好的理解和使用Trait——作者Overtrue最后当然要感谢Overtrue兄。经过讨论LaravelFollowFollowTrait重命名为CanFollowFollowerTrait重命名为CanBeFollowedLaravelVoteVoteTrait重命名为VoteVoterTrait重命名为CanBeVoted