processReminders(); } else { //multiDB environment, need to foreach (MultiDB::$dbs as $db) { MultiDB::setDB($db); $this->processReminders($db); } } } private function processReminders($db = null) { Invoice::where('next_send_date', Carbon::today()->format('Y-m-d'))->with('invitations')->cursor()->each(function ($invoice) { if ($invoice->isPayable()) { $invoice->invitations->each(function ($invitation) use ($invoice) { $email_builder = (new InvoiceEmail())->build($invitation); EmailInvoice::dispatch($email_builder, $invitation, $invoice->company); info("Firing email for invoice {$invoice->number}"); }); if ($invoice->invitations->count() > 0) event(new InvoiceWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars())); } else { $invoice->next_send_date = null; $invoice->save(); } }); } }