gorankrgovic / laravel-likeable
使用UUIDs使Laravel Eloquent模型可“喜欢”。
Requires
- php: ^7.0
- illuminate/database: ~5.5.0|~5.6.0|~5.7.0|~5.8.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0
- ramsey/uuid: ^3.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.10
- mockery/mockery: ^1.0
- orchestra/database: ~3.5.0|~3.6.0|~3.7.0
- orchestra/testbench: ~3.5.0|~3.6.0|~3.7.0
- phpunit/phpunit: ^6.0|^7.0|^7.5
This package is auto-updated.
Last update: 2024-09-17 22:04:19 UTC
README
介绍
此包基本上是Laravel Love包的简化分支,仅使用LIKE和UNLIKE功能。Laravel Love具有更多功能,例如“LIKE”和“DISLIKE”功能。
此外,值得注意的是,此包使用UUIDs而不是整数ID。并且“Likeable”和“Liker”模型也需要使用UUIDs。如果您不使用UUIDs,请使用cybercog/laravel-likeable、cybercog/laravel-love或以下列出的任何替代方案。
为此包使用Ramsey UUID生成UUID。
功能
- 使用UUIDs而不是整数(您的用户模型也必须使用它们!)
- 设计用于与Laravel Eloquent模型一起使用。
- 使用合约以保持高度定制能力。
- 使用特性以获得开箱即用的功能。
- 大部分逻辑由
LikeableService
处理。 - 具有Artisan命令
golike:recount {model?}
以重新获取喜欢计数。 - 对于单个模型的订阅是互斥的。
- 按喜欢计数获取可“喜欢”的模型。
- 为
like
、unlike
方法提供事件。 - 遵循PHP标准建议
替代方案
- cybercog/laravel-love
- cybercog/laravel-likeable
- rtconner/laravel-likeable
- faustbrian/laravel-likeable
- sukohi/evaluation
- zvermafia/lavoter
- francescomalatesta/laravel-reactions
- muratbsts/laravel-reactable
安装
首先,通过Composer引入此包。
$ composer require gorankrgovic/laravel-likeable
执行数据库迁移
最后,您需要发布并运行数据库迁移。
$ php artisan migrate
如果您想更改迁移,请先将其发布到您的应用程序中。
$ php artisan vendor:publish --provider="Gox\Laravel\Likeable\Providers\LikeableServiceProvider" --tag=migrations
使用方法
准备Liker模型
在将获得喜欢行为的模型中使用Gox\Contracts\Likeble\Liker\Models\Liker
合约,或者实现它,或者只需使用Gox\Laravel\Likeable\Liker\Models\Traits\Liker
特性。
use Gox\Contracts\Likeable\Liker\Models\Liker as LikerContract; use Gox\Laravel\Likeable\Liker\Models\Traits\Liker; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable implements LikerContract { use Liker; }
准备可“喜欢”模型
在将获得喜欢行为的模型中使用Gox\Contracts\Likeable\Likeable\Models\Likeable
合约,或者实现它,或者只需使用Gox\Laravel\Likeable\Likeable\Models\Traits\Likeable
特性。
use Gox\Contracts\Likeable\Likeable\Models\Likeable as LikeableContract; use Gox\Laravel\Likeable\Likeable\Models\Traits\Likeable; use Illuminate\Database\Eloquent\Model; class Article extends Model implements LikeableContract { use Likeable; }
可用方法
喜欢
喜欢模型
$user->like($article); $article->likeBy(); // current user $article->likeBy($user->id);
从模型中删除喜欢标记
$user->unlike($article); $article->unlikeBy(); // current user $article->unlikeBy($user->id);
获取模型喜欢计数
$article->likesCount;
获取模型喜欢计数器
$article->likesCounter;
获取喜欢关系
$article->likes();
获取现有模型喜欢的可迭代Illuminate\Database\Eloquent\Collection
$article->likes;
布尔检查用户是否喜欢模型
$user->hasLiked($article); $article->liked; // current user $article->isLikedBy(); // current user $article->isLikedBy($user->id);
首先在预加载的关系likes
中进行检查。
获取喜欢模型的用户集合
$article->collectLikers();
删除模型的所有喜欢者
$article->removeLikes();
作用域
查找用户喜欢的所有文章
Article::whereLikedBy($user->id) ->with('likesCounter') // Allow eager load (optional) ->get();
按喜欢计数获取可“喜欢”的模型
$sortedArticles = Article::orderByLikesCount()->get(); $sortedArticles = Article::orderByLikesCount('asc')->get();
默认使用desc
作为排序方向。
事件
在每次添加喜欢时触发\Gox\Laravel\Subscribe\Subscribeable\Events\LikeableWasLiked
事件。
在每次删除喜欢时触发\Gox\Laravel\Subscribe\Subscribeable\Events\LikeableWasUnliked
事件。
控制台命令
重新计算所有模型类型的点赞数
$ golike:recount
具体模型类型的重新计算(使用形态映射别名)
$ golike:recount --model="article"
具体模型类型的重新计算(使用完全限定的类名)
$ golike:recount --model="App\Models\Article"
安全
如果您发现任何与安全相关的问题,请通过电子邮件联系我,而不是使用问题跟踪器。