定制 tehwave/laravel-achievements 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tehwave/laravel-achievements

最新稳定版本:v1.6.1

Composer 安装命令:

composer require tehwave/laravel-achievements

包简介

Simple, elegant Achievements the Laravel way

README 文档

README

Laravel Achievements

Simple, elegant Achievements the Laravel way.

Software License Automated Tests

Requirements

The package has been developed and tested to work with the latest supported versions of PHP and Laravel as well as the following minimum requirements:

  • Laravel 11
  • PHP 8.2

Version Compatibility

Laravel PHP Branch
11+ 8.2+ master
10 and below 8.1 and below 1.x

Installation

Install the package via Composer.

composer require tehwave/laravel-achievements

Publish migrations.

php artisan vendor:publish --tag="achievements-migrations"

Migrate the migrations.

php artisan migrate

As an optional choice, you may publish config as well.

php artisan vendor:publish --tag="achievements-config"

Usage

Laravel Achievements work much like Laravel's notifications.

$user = \App\User::find(1);

$user->achieve(new \App\Achievements\UsersFirstPost());

Creating Achievements

php artisan make:achievement UsersFirstPost

This command will place a fresh Achievement class in your new app/Achievements directory.

Each Achievement class contains a toDatabase method, that you may use to store additional data with the achievement, and a few properties for basic meta information.

Unlocking Achievements

Use Achiever trait on models that can unlock achievements.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use tehwave\Achievements\Traits\Achiever;

class User extends Model
{
    use Achiever;

    // ...
}

Achieve an achievement via the achieve method.

$user = \App\User::find(1);

$user->achieve(new \App\Achievements\UsersFirstPost());

...or use Achievement class to unlock achievements.

$user = \App\User::find(1);

\tehwave\Achievements\Achievement::unlock($user, new \App\Achievements\UsersFirstPost());

Accessing Achievements

Retrieve all of the entity's unlocked achievements.

$user = \App\User::find(1);

$user->achievements()->get();

Checking if entity has Achievement

On models with the Achiever trait, you may pass an Achievement instance to hasAchievement method to check if the specified achievement exist on the model.

$achievement = new \App\Achievements\UsersFirstPost();

$user = \App\User::find(1);

$user->hasAchievement($achievement);
// false

$user->achieve($achievement);

$user->hasAchievement($achievement);
// true

Should you not want to pass an instance, you may also pass the class name.

$user->hasAchievement(\App\Achievements\UsersFirstPost::class);

Tests

Run the following command to test the package.

composer test

Security

For any security related issues, send a mail to peterchrjoergensen+achievements@gmail.com instead of using the issue tracker.

Changelog

See CHANGELOG for details on what has changed.

Upgrade Guide

See UPGRADING for details on how to upgrade.

Contributions

See CONTRIBUTING for details on how to contribute.

Credits

Inspired by https://github.com/gstt/laravel-achievements

About

I work as a Web Developer in Denmark on Laravel and WordPress websites.

Follow me @tehwave on Twitter!

License

MIT License

统计信息

  • 总下载量: 11.1k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 69
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 69
  • Watchers: 2
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-03-28