*/ protected $fillable = [ 'key', 'value', 'group', 'description', 'is_public', ]; /** * 属性类型转换 * * @return array */ protected function casts(): array { return [ 'value' => 'array', 'is_public' => 'boolean', ]; } /** * 获取配置值 * * @param string $key 配置键 * @param mixed $default 默认值 * @return mixed */ public static function get(string $key, $default = null) { $setting = static::where('key', $key)->first(); return $setting ? $setting->value : $default; } /** * 设置配置值 * * @param string $key 配置键 * @param mixed $value 配置值 * @param string $group 配置分组 * @return \App\Models\SystemSetting */ public static function set(string $key, $value, string $group = 'general') { return static::updateOrCreate( ['key' => $key], ['value' => $value, 'group' => $group] ); } /** * 配置活动日志选项 * * @return \Spatie\Activitylog\LogOptions */ public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logOnly(['key', 'value', 'group', 'description']) ->logOnlyDirty() ->setDescriptionForEvent(fn(string $eventName) => "系统设置已{$eventName}"); } }