27 lines
669 B
PHP
27 lines
669 B
PHP
<?php
|
|
|
|
namespace Modules\Sites\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
final class SiteSetting extends Model
|
|
{
|
|
protected $fillable = ['site_id', 'group', 'key', 'value', 'type'];
|
|
|
|
public function site(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Site::class);
|
|
}
|
|
|
|
public function typedValue(): mixed
|
|
{
|
|
return match ($this->type) {
|
|
'boolean' => filter_var($this->value, FILTER_VALIDATE_BOOLEAN),
|
|
'integer' => (int) $this->value,
|
|
'json' => json_decode((string) $this->value, true),
|
|
default => $this->value,
|
|
};
|
|
}
|
|
}
|