tizis / 成就
1.1.2
2021-09-08 12:05 UTC
Requires
- php: ^7.1|^8.0
- illuminate/database: ^8.0
- illuminate/http: ^8.0
- illuminate/support: ^8.0
README
此包可用于向您的应用程序中的任何模型添加与成就的交互。
"php": "^7.1|^8.0",
"illuminate/support": "^8.0",
安装
composer require tizis/achievements
发布迁移 & 迁移
php artisan vendor:publish --provider="tizis\achievements\Providers\ServiceProvider" --tag=migrations`
php artisan migrate
发布配置 & 配置(可选)
php artisan vendor:publish --provider="tizis\achievements\Providers\ServiceProvider" --tag=config
示例
use tizis\achievements\Contracts\HasAchievements; use tizis\achievements\Traits\InteractsWithAchievements; class User extends Authenticatable implements HasAchievements { use InteractsWithAchievements; }
示例 #1: 基础
use App\Models\User; use tizis\achievements\Entity\Achievement; use tizis\achievements\Entity\Group; use tizis\achievements\Entity\GroupNamespace; use tizis\achievements\Services\GroupAchievementService; ... $createdGroup = new Group([ 'title' => 'Running', 'description' => 'Sport is cool', 'hash' => 'sport_activities_running', 'meta' => 'keywords or something like' ]); $createdGroupNamespace = GroupNamespace::create(['title' => 'Activities']); $createdGroupNamespace->groups()->save($createdGroup); $createdGroup->achievements()->saveMany([ new Achievement([ 'title' => 'Running: Beginner', 'level' => 1, 'description' => 'optional', 'points' => '10', //to next level 'value' => '1000' // it's just abstract achievement 'value' ]), new Achievement([ 'title' => 'Running: Pro', 'level' => 2, 'description' => 'optional', 'points' => '100', //to next level 'value' => '1000000' // it's just abstract achievement 'value' ]) ]); $user = User::where('id', 1)->first(); $service = new GroupAchievementService($user); $service->addProgress($createdGroup, 20);
示例 #2: 基础 2
use App\Models\User; use tizis\achievements\Entity\Group; use tizis\achievements\Services\GroupAchievementService; ... $group = Group::where('hash', 'sport_activities_running')->firstOrFail(); $user = User::where('id', 1)->first(); $service = new GroupAchievementService($user); $service->removeProgress($group, 20);
示例 #3: 没有组的成就
use App\Models\User; use tizis\achievements\Entity\Achievement; use tizis\achievements\Services\AchievementService; ... $createdSingleAchievement = Achievement::create([ 'title' => 'Running: Beginner', 'level' => 1, 'description' => 'optional', 'points' => '100', //to next level 'value' => '1000' // it's just abstract achievement 'value' ]); $user = User::where('id', 1)->first(); $service = new AchievementService($user); $service->addProgress($createdSingleAchievement, '100');
示例 #4: 助手
use App\Models\User; use tizis\achievements\AchievementHelper; ... $user = User::where('id', 1)->first(); AchievementHelper::count($user); // return count of user's unlocked achievements AchievementHelper::lastUnlockedAchievements($user, 100); // return last 100 unlocked achievements AchievementHelper::lastUnlockedAchievement($user); // return last unlocked achievement AchievementHelper::getUnlockedUniqueAchievementsOfUser($user); // return unlocked unique achievements (without group)