tbdscripts / laravel-achievements
使用 Laravel 方式实现的简单、优雅的成就
v1.3.3
2020-11-02 21:23 UTC
Requires
- php: ^7.4
- illuminate/console: ^8.0
- illuminate/database: ^8.0
- illuminate/filesystem: ^8.0
- illuminate/support: ^8.0
- ramsey/uuid: ^4.1.1
Requires (Dev)
- orchestra/testbench: ^v6.3.0
- phpunit/phpunit: ^9.0
README
使用 Laravel 方式实现的简单、优雅的成就。
需求
该软件包已开发并测试,以确保与以下最低要求兼容
- Laravel 5.8
- PHP 7.1
安装
通过 Composer 安装该软件包。
composer require tehwave/laravel-achievements
发布迁移。
php artisan vendor:publish --tag="achievements-migrations"
迁移迁移。
php artisan migrate
作为一个可选步骤,您也可以发布配置。
php artisan vendor:publish --tag="achievements-config"
使用
Laravel Achievements 与 Laravel 的 通知 类似。
$user = \App\User::find(1); $user->achieve(new \App\Achievements\UsersFirstPost());
创建成就
php artisan make:achievement UsersFirstPost
此命令将在您的 app/Achievements 目录中创建一个新的 Achievement 类。
每个 Achievement 类都包含一个 toDatabase 方法,您可以使用它来存储与成就相关的附加数据,以及一些用于基本元信息的属性。
解锁成就
在可以解锁成就的模型上使用 Achiever 特性。
<?php namespace App; use Illuminate\Database\Eloquent\Model; use tehwave\Achievements\Traits\Achiever; class User extends Model { use Achiever; // ... }
通过 achieve 方法 Achieve 成就。
$user = \App\User::find(1); $user->achieve(new \App\Achievements\UsersFirstPost());
...或使用 Achievement 类来解锁成就。
$user = \App\User::find(1); \tehwave\Achievements\Achievement::unlock($user, new \App\Achievements\UsersFirstPost());
访问成就
检索实体的所有已解锁成就。
$user = \App\User::find(1); $user->achievements()->get();
检查实体是否具有成就
在具有 Achiever 特性的模型上,您可以将 Achievement 实例传递给 hasAchievement 方法以检查模型上是否存在指定的成就。
$achievement = new \App\Achievements\UsersFirstPost(); $user = \App\User::find(1); $user->hasAchievement($achievement); // false $user->achieve($achievement); $user->hasAchievement($achievement); // true
如果您不想传递实例,也可以传递类名。
$user->hasAchievement(\App\Achievements\UsersFirstPost::class);
测试
composer test
安全
对于任何与安全相关的问题,请发送邮件到 peterchrjoergensen+achievements@gmail.com,而不是使用问题跟踪器。
变更日志
有关更改的详细信息,请参阅 CHANGELOG。
贡献
有关如何贡献的详细信息,请参阅 CONTRIBUTING。
鸣谢
灵感来源于 https://github.com/gstt/laravel-achievements
关于
我在丹麦担任 Web 开发人员,从事 Laravel 和 WordPress 网站开发工作。
在 Twitter 上关注我 @tehwave!