20 lines
1.0 KiB
PHP
20 lines
1.0 KiB
PHP
<?php
|
|
namespace Modules\Sites\Models;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
final class Site extends Model
|
|
{
|
|
protected $fillable = ['name','key','status','theme','default_locale','timezone','is_default'];
|
|
protected function casts(): array { return ['is_default' => 'boolean']; }
|
|
public function domains(): HasMany { return $this->hasMany(SiteDomain::class); }
|
|
public function settings(): HasMany { return $this->hasMany(SiteSetting::class); }
|
|
public function assignments(): HasMany { return $this->hasMany(SiteContent::class); }
|
|
public function scopeActive(Builder $query): Builder { return $query->where('status', 'active'); }
|
|
public function setting(string $key, mixed $default = null): mixed
|
|
{
|
|
$setting = $this->relationLoaded('settings') ? $this->settings->firstWhere('key', $key) : $this->settings()->where('key', $key)->first();
|
|
return $setting?->typedValue() ?? $default;
|
|
}
|
|
}
|