option('days'); $targetDate = now()->addDays($days)->toDateString(); $members = Member::whereDate('membership_expires_at', $targetDate) ->where(function ($q) { $q->whereNull('last_expiry_reminder_sent_at') ->orWhere('last_expiry_reminder_sent_at', '<', now()->subDays(1)); }) ->get(); if ($members->isEmpty()) { $this->info('No members to remind.'); return static::SUCCESS; } foreach ($members as $member) { if (! $member->email) { continue; } Mail::to($member->email)->queue(new MembershipExpiryReminderMail($member)); $member->last_expiry_reminder_sent_at = now(); $member->save(); } $this->info('Reminders sent to '.$members->count().' member(s).'); return static::SUCCESS; } }