'array', 'material_summary' => 'array', 'options' => 'array', 'is_active' => 'boolean', 'registration_date' => 'date', 'rail_width' => 'decimal:2', 'rail_length' => 'decimal:2', 'front_bottom_width' => 'decimal:2', 'box_width' => 'decimal:2', 'box_height' => 'decimal:2', 'bar_width' => 'decimal:2', 'bar_height' => 'decimal:2', ]; protected $hidden = ['deleted_at']; public function files(): HasMany { return $this->hasMany(File::class, 'document_id') ->where('document_type', 'bending_model'); } public function getOption(string $key, mixed $default = null): mixed { return data_get($this->options, $key, $default); } public function setOption(string $key, mixed $value): self { $options = $this->options ?? []; data_set($options, $key, $value); $this->options = $options; return $this; } public const TYPE_GUIDERAIL = 'GUIDERAIL_MODEL'; public const TYPE_SHUTTERBOX = 'SHUTTERBOX_MODEL'; public const TYPE_BOTTOMBAR = 'BOTTOMBAR_MODEL'; }