Files
SkinbaseNova/app/Models/Achievement.php
2026-03-20 21:17:26 +01:00

47 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use App\Models\UserAchievement;
class Achievement extends Model
{
use HasFactory;
protected $fillable = [
'name',
'slug',
'description',
'icon',
'xp_reward',
'type',
'condition_type',
'condition_value',
];
protected function casts(): array
{
return [
'xp_reward' => 'integer',
'condition_value' => 'integer',
];
}
public function userAchievements(): HasMany
{
return $this->hasMany(UserAchievement::class, 'achievement_id');
}
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class, 'user_achievements', 'achievement_id', 'user_id')
->withPivot('unlocked_at');
}
}