*/ protected function casts(): array { return [ 'is_required' => 'boolean', 'metadata_schema' => 'array', 'type' => FieldType::class, ]; } /** * @return BelongsTo */ public function tenant(): BelongsTo { return $this->belongsTo(Tenant::class, 'tenant_codigo', 'codigo'); } /** * @return HasMany */ public function options(): HasMany { return $this->hasMany(AttributeOption::class, 'attribute_id')->orderBy('sort_order'); } /** * @return HasMany */ public function productAttributes(): HasMany { return $this->hasMany(ProductAttribute::class, 'attribute_id'); } /** * @return HasManyThrough */ public function variantDefinitions(): HasManyThrough { return $this->hasManyThrough( ProductVariantDefinition::class, ProductAttribute::class, 'attribute_id', 'products_attribute_id', 'id', 'id' ); } }