ayham / like
Like - 一个简单的 Laravel 扩展包,用于添加点赞功能
1.0.0
2024-03-26 19:36 UTC
Requires
- php: >=8.2
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(), ]; } }