Files
2025-12-29 14:43:24 +02:00

41 lines
978 B
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class AppSetting extends Model
{
protected $fillable = ['key', 'value', 'type', 'description'];
/**
* Get a setting by key
*/
public static function get(string $key, mixed $default = null): mixed
{
$setting = self::where('key', $key)->first();
if (!$setting) {
return $default;
}
return match ($setting->type) {
'integer' => (int) $setting->value,
'boolean' => (bool) $setting->value,
'json' => json_decode($setting->value, true),
default => $setting->value,
};
}
/**
* Set a setting
*/
public static function set(string $key, mixed $value, string $type = 'string'): void
{
self::updateOrCreate(
['key' => $key],
['value' => is_array($value) ? json_encode($value) : (string) $value, 'type' => $type]
);
}
}