'datetime:Y-m-d', ]; /** * Get the Goal for this date. */ public function goal(): BelongsTo { return $this->belongsTo(Goal::class); } /** * Get the User this journal date belongs to. */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** * Gets a journal date for a user and date, creating a new one if necessary. * * @param \App\Models\User $user * User. * @param \Illuminate\Support\Carbon $date * Date. * * @return \App\Models\JournalDate * Journal date for provided user and date. */ public static function getOrCreateJournalDate(User $user, Carbon $date): JournalDate { /** @var \App\Models\JournalDate $journal_date */ $journal_date = $user->journalDates()->whereDate('date', '=', $date)->first(); if (empty($journal_date)) { $journal_date = JournalDate::make(['date' => $date])->user()->associate($user); } return $journal_date; } }