*/ use HasFactory; protected $fillable = [ 'name', 'type', 'settings', 'is_active', ]; protected function casts(): array { return [ 'type' => DisplayVersionType::class, 'settings' => 'array', 'is_active' => 'boolean', ]; } public function items(): HasMany { return $this->hasMany(DisplayVersionItem::class)->orderBy('sort_order'); } public function displays(): BelongsToMany { return $this->belongsToMany(Display::class, 'display_display_version') ->withPivot('sort_order'); } /** * @return HasMany */ public function activeItems(?string $itemType = null): HasMany { $query = $this->items()->where('is_active', true); if ($itemType) { $query->where('item_type', $itemType); } return $query; } public function scopeOfType(Builder $query, DisplayVersionType $type): Builder { return $query->where('type', $type); } public function scopeActive(Builder $query): Builder { return $query->where('is_active', true); } }