$products * * @method static Builder|Discount published() * * @mixin \Eloquent */ #[Fillable([ 'type', 'is_old_price_displayed', 'date_start', 'date_end', ])] class Discount extends Model { #[\Override] protected function casts(): array { return [ 'type' => DiscountType::class, 'value' => DiscountValueCast::class, 'is_old_price_displayed' => 'bool', 'date_start' => 'datetime', 'date_end' => 'datetime', ]; } /** * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ protected function scopePublished(Builder $query): Builder { return $query ->where(function (Builder $q): void { $q->whereNull('date_start')->orWhere('date_start', '<=', Date::now()); }) ->where(function (Builder $q): void { $q->whereNull('date_end')->orWhere('date_end', '>=', Date::now()); }); } /** @return \Illuminate\Database\Eloquent\Relations\HasMany<\App\Models\Product,$this> */ public function products(): HasMany { return $this->hasMany(Product::class); } }