© 2026 Hedgehog Software, LLC
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; class Product extends Model implements HasMedia { use HasFactory, InteractsWithMedia; protected $fillable = [ 'product_name', 'product_description', 'category_id', 'sub_category_id', 'image', 'stock', 'bought_in', 'price', 'stock_threshold', 'status', ]; public function category(){ return $this->belongsTo(Category::class); } public function sub_category(){ return $this->belongsTo(SubCategory::class); } }
use Filament\Forms\Components\SpatieMediaLibraryFileUpload; SpatieMediaLibraryFileUpload::make('image') ->directory('product-images') ->visibility('public') ->image() ->imageEditor(),
"require": { "php": "^8.2", "filament/filament": "^3.2", "laravel/framework": "^11.9", "laravel/tinker": "^2.9", "livewire/livewire": "^3.5", "shanerbaner82/panel-roles": "^0.0.3", "spatie/laravel-medialibrary": "*", "spatie/laravel-permission": "^6.9" },