tbdscripts / laravel-achievements

使用 Laravel 方式实现的简单、优雅的成就

v1.3.3 2020-11-02 21:23 UTC

This package is auto-updated.

Last update: 2021-06-30 22:53:57 UTC


README

使用 Laravel 方式实现的简单、优雅的成就。

Software License StyleCI Quality Score Build Status

需求

该软件包已开发并测试,以确保与以下最低要求兼容

  • 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

许可证

MIT 许可证