gorankrgovic/laravel-likeable

使用UUIDs使Laravel Eloquent模型可“喜欢”。

v0.0.4 2019-03-17 09:12 UTC

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-likeablecybercog/laravel-love或以下列出的任何替代方案。

为此包使用Ramsey UUID生成UUID。

功能

  • 使用UUIDs而不是整数(您的用户模型也必须使用它们!)
  • 设计用于与Laravel Eloquent模型一起使用。
  • 使用合约以保持高度定制能力。
  • 使用特性以获得开箱即用的功能。
  • 大部分逻辑由LikeableService处理。
  • 具有Artisan命令golike:recount {model?}以重新获取喜欢计数。
  • 对于单个模型的订阅是互斥的。
  • 按喜欢计数获取可“喜欢”的模型。
  • likeunlike方法提供事件。
  • 遵循PHP标准建议

替代方案

安装

首先,通过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"

安全

如果您发现任何与安全相关的问题,请通过电子邮件联系我,而不是使用问题跟踪器。

许可证

  • Laravel Likeable 包是开源软件,由 Goran Krgovic 根据 MIT 许可证 发布。
  • Laravel Love 包是开源软件,由 Anton Komarev 根据 MIT 许可证 发布。