41 lines
978 B
PHP
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]
|
|
);
|
|
}
|
|
}
|