*/ protected $hidden = [ 'period_duration', 'space_id', ]; protected function casts(): array { return [ 'period_type' => BudgetPeriodType::class, 'rollover_type' => RolloverType::class, 'period_start_day' => 'integer', 'is_catch_all' => 'boolean', ]; } /** @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** @return BelongsToMany */ public function categories(): BelongsToMany { return $this->belongsToMany(Category::class); } /** @return BelongsToMany */ public function labels(): BelongsToMany { return $this->belongsToMany(Label::class); } /** @return HasMany */ public function periods(): HasMany { return $this->hasMany(BudgetPeriod::class); } public function getCurrentPeriod(): ?BudgetPeriod { return $this->periods() ->where('start_date', '<=', today()) ->where('end_date', '>=', today()) ->first(); } }