belongsTo(FoodCategory::class, 'category_id')->select('id', 'name'); } public function menuCategory(): BelongsTo { return $this->belongsTo(MenuCategory::class)->select('id', 'name'); } public function menuSection(): BelongsTo { return $this->belongsTo(MenuSection::class)->select('id', 'name'); } public function variants(): HasMany { return $this->hasMany(FoodVariant::class, 'food_item_id')->with('unit'); } public function defaultVariant(): HasOne { return $this->hasOne(FoodVariant::class, 'food_item_id')->with('unit')->where('is_default', true); } public function availabilities(): HasMany { return $this->hasMany(FoodAvailability::class, 'food_item_id'); } public function addons(): BelongsToMany { return $this->belongsToMany(Addon::class, 'addon_food', 'food_item_id', 'addon_id') ->using(AddonFood::class) ->withTimestamps(); } public function reviews(): HasMany { return $this->hasMany(Review::class, 'food_item_id')->with('images'); } public function scopeChefSpecial($query, int $value): mixed { return $query->where('is_chef_special', $value); } public function scopePopular($query, int $value): mixed { return $query->where('is_popular_item', $value); } }