b2in/app/Models/Setting.php
2026-02-20 17:57:50 +01:00

55 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Setting extends Model
{
protected $fillable = [
'group',
'key',
'value',
'type',
'description',
];
/**
* Hole einen Setting-Wert anhand von Gruppe und Key.
*/
public static function getValue(string $group, string $key, mixed $default = null): mixed
{
$setting = self::query()
->where('group', $group)
->where('key', $key)
->first();
if (! $setting) {
return $default;
}
return match ($setting->type) {
'integer' => (int) $setting->value,
'boolean' => filter_var($setting->value, FILTER_VALIDATE_BOOLEAN),
'json' => json_decode($setting->value, true),
default => $setting->value,
};
}
/**
* Setze einen Setting-Wert.
*/
public static function setValue(string $group, string $key, mixed $value): void
{
$setting = self::query()
->where('group', $group)
->where('key', $key)
->first();
if ($setting) {
$setting->update([
'value' => is_array($value) ? json_encode($value) : (string) $value,
]);
}
}
}