Laravel Love:为 Eloquent 模型添加点赞和踩
发布于 作者: Paul Redmond
Laravel Love 是 Anton Komarev 开发的一个软件包,它允许人们通过点赞和踩 Eloquent 模型来表达他们对内容的感受。该软件包通过定义一个名为“liker”的模型来工作,该模型使用一个契约来定义。最有可能的是,这将是您应用程序的 User
模型。
<?php use Cog\Contracts\Love\Liker\Models\Liker as LikerContract;use Cog\Laravel\Love\Liker\Models\Traits\Liker;use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements LikerContract{ use Liker;}
另一方面,您可以定义 Eloquent 模型,这些模型可以被您的“liker”模型“点赞”。
use Cog\Contracts\Love\Likeable\Models\Likeable as LikeableContract;use Cog\Laravel\Love\Likeable\Models\Traits\Likeable;use Illuminate\Database\Eloquent\Model; class Article extends Model implements LikeableContract{ use Likeable;}
以下是一些此软件包提供的模型可用方法。
$user->like($article);$user->likedBy(); // true/false$user->unlike($article);$user->toggleLike($article); // Dislike$user->dislike($article);
在可点赞模型上,以下是一些可用的方法。
<?php $article->likesCount;$article->dislikesCount;
该软件包还提供模型范围,您可以在 GitHub 自述文件 中了解有关模型范围的信息,以及安装说明和 API 文档。
<?php # Find all articles liked by a userArticle::whereLikedBy($user->id) ->with('likesCounter') // Allow eager load (optional) ->get(); # Get Articles sorted by likes count asc$sortedArticles = Article::orderByLikesCount('asc')->get(); # The default sort order is desc$sortedArticles = Article::orderByLikesCount()->get();
此软件包的明显用例是在内容上显示点赞/踩的数量,甚至根据该数量对内容进行排序(例如,Reddit 或 Hacker News 的点赞数)。
另一个让我更感兴趣的用例是尝试向用户推荐内容,并允许用户提供反馈,说明他们是否喜欢或不喜欢特定推荐。您可以使用这些数据根据用户反馈不断改进推荐内容。
了解更多
您可以在 GitHub 仓库 cybercog/laravel-love 中获取安装说明和文档。您能想到哪些其他用例?回复 @laravelnews 在 Twitter 上告诉我们!