Files
jabali-panel/app/Models/Setting.php
2026-02-02 03:11:45 +02:00

50 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
class Setting extends Model
{
protected $fillable = [
'key',
'value',
];
public $timestamps = true;
/**
* Get a setting value by key
*/
public static function get(string $key, ?string $default = null): ?string
{
return Cache::remember("setting.{$key}", 3600, function () use ($key, $default) {
$setting = static::where('key', $key)->first();
return $setting?->value ?? $default;
});
}
/**
* Set a setting value
*/
public static function set(string $key, ?string $value): void
{
static::updateOrCreate(
['key' => $key],
['value' => $value]
);
Cache::forget("setting.{$key}");
}
/**
* Get all settings as key-value array
*/
public static function getAll(): array
{
return static::pluck('value', 'key')->toArray();
}
}