*/ public $translatable = ['name', 'description']; /** * Translatable fields * * @var array */ public $sortable = [ 'order_column_name' => 'sort_order', 'sort_when_creating' => true, ]; /** * Get the options for generating the slug. */ public function getSlugOptions(): SlugOptions { return SlugOptions::create() ->generateSlugsFrom('name') ->saveSlugsTo('slug'); } /** * Register Media Collections */ public function registerMediaCollections(): void { $this->addMediaCollection('uploads') ->singleFile() ->acceptsMimeTypes(['image/jpg', 'image/jpeg', 'image/png']) ->useFallbackUrl( sprintf('%s/logo-space.png', config('app.url')) ); } /** * Register Media Conversions */ public function registerMediaConversions(?Media $media = null): void { $this->addMediaConversion('thumb200x200') ->fit(Manipulations::FIT_CONTAIN, 200, 200); $this->addMediaConversion('thumb400x400') ->fit(Manipulations::FIT_CONTAIN, 400, 400); $this->addMediaConversion('thumb720x720') ->fit(Manipulations::FIT_CONTAIN, 720, 720); $this->addMediaConversion('thumb800x800') ->fit(Manipulations::FIT_CONTAIN, 800, 800); $this->addMediaConversion('thumb1200x1200') ->fit(Manipulations::FIT_CONTAIN, 1200, 1200); $this->addMediaConversion('thumb288x431') ->fit(Manipulations::FIT_CONTAIN, 288, 431); $this->addMediaConversion('thumb270x350') ->fit(Manipulations::FIT_CONTAIN, 270, 350); } /** * Products */ public function products(): MorphToMany { return $this->morphToMany(Product::class, 'productable', 'product_has_relations'); } /** * Brand's Products web page */ public function productsPage(): string { return route('web.collections.products', ['collection' => $this->slug]); } }