30 خطوط
788 B
PHP
30 خطوط
788 B
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class Setting extends Model
|
|
{
|
|
protected $fillable = ['key', 'value', 'group', 'type'];
|
|
|
|
protected function value(): Attribute
|
|
{
|
|
return Attribute::make(
|
|
get: function ($value) {
|
|
if ($value === null || $value === '') {
|
|
return $value;
|
|
}
|
|
|
|
$decoded = json_decode($value, true);
|
|
|
|
return json_last_error() === JSON_ERROR_NONE ? $decoded : $value;
|
|
},
|
|
set: fn ($value) => is_array($value) || is_object($value) || is_bool($value)
|
|
? json_encode($value, JSON_UNESCAPED_UNICODE)
|
|
: $value,
|
|
);
|
|
}
|
|
}
|