ayham/like

Like - 一个简单的 Laravel 扩展包,用于添加点赞功能

1.0.0 2024-03-26 19:36 UTC

This package is not auto-updated.

Last update: 2024-09-25 20:26:16 UTC


README

提供一个特质,允许在您的应用中添加任何 Eloquent 模型的反应(点赞)

注意:此特质用于切换点赞(点击按钮添加点赞,再次点击相同的按钮取消点赞(类似于 Instagram 上的点赞按钮))

安装

您可以通过 composer 安装此包

composer require ayham/like

您可以使用以下命令发布迁移

php artisan vendor:publish --provider="Ayham\Like\Provider\LikeServiceProvider" --tag="migrations"

之后运行迁移

php artisan migrate

与大多数 Laravel 扩展包一样,如果您使用的是 Laravel 5.5 或更高版本,则该包将自动发现(如果您对此不熟悉,请了解更多信息)。

如果您使用的是 5.5 版本之前的 Laravel,则需要注册 Rateable 服务提供者。在您的 config/app.php 文件中,将 Ayham\Like\Provider\LikeServiceProvider::class 添加到 $providers 数组的末尾。

'providers' => [

    Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
    Illuminate\Auth\AuthServiceProvider::class,
    ...
    Ayham\Like\Provider\LikeServiceProvider::class,

],

使用方法

如果我想让用户能够添加对模型“点赞”的反应,请在模型中导入 Likeable 特质。

<?php

namespace App\Models;

use Ayham\Like\Trait\Likeable;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use Likeable;
    //...
}

在用户模型中,我必须添加一个 hasMany 关系以授予用户向多个模型添加点赞的权利

namespace App\Models;

use Ayham\Like\Model\Like;
//...

class User extends Authenticatable
{
    //...
    protected $fillable = [
      //...
    ];

    public function likes()
    {
        return $this->hasMany(Like::class);
    }

现在,您的模型可以访问一些额外的功能。

例如,要添加点赞,当点击帖子上的点赞按钮时,我们可以使用 toggleLike()。注意,必须将用户作为参数添加

$post = Post::first();
$user = Auth::user();
$post->toggleLike($user);

然后使用 likesCount() 显示点赞数

$post->likesCount();
dd($post->likesCount());

如果您正在使用资源(Laravel API 资源)来自定义返回值

class PostResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @return array<string, mixed>
     */
    public function toArray(Request $request): array
    {
        return [
            // ...
            'likes_count'  => $this->likesCount(),
        ];
    }
}