| Current Path : /var/www/html/dynaweb-cms-v1/app/Models/Backend/ |
| Current File : /var/www/html/dynaweb-cms-v1/app/Models/Backend/ThemeRule.php |
<?php
namespace App\Models\Backend;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Table;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
#[Table('theme_rules', key: 'rule_id')]
#[Fillable([
'rule_name',
'rule_description',
'rule_content',
'rule_params',
'rule_status',
'created_by',
'updated_by',
])]
class ThemeRule extends Model
{
protected $casts = [
'rule_status' => 'boolean',
];
protected function ruleParams(): Attribute
{
return Attribute::make(
get: function ($value) {
if (is_array($value)) return $value;
if (is_string($value) && $value !== '') {
$decoded = json_decode($value, true);
if (is_array($decoded)) return $decoded;
if (is_string($decoded)) {
$decoded2 = json_decode($decoded, true);
return is_array($decoded2) ? $decoded2 : [];
}
}
return [];
},
set: fn($value) => is_string($value) ? $value : json_encode($value),
);
}
public function settings()
{
return $this->hasMany(ThemeSetting::class, 'setting_rule_id', 'rule_id');
}
public function createdBy()
{
return $this->belongsTo(BackendUser::class, 'created_by');
}
public function updatedBy()
{
return $this->belongsTo(BackendUser::class, 'updated_by');
}
}