/** * Reports on budgets without any transactions. */ private function reportBudgets() { $set = Budget::leftJoin('budget_transaction_journal', 'budgets.id', '=', 'budget_transaction_journal.budget_id')->leftJoin('users', 'budgets.user_id', '=', 'users.id')->distinct()->whereNull('budget_transaction_journal.budget_id')->whereNull('budgets.deleted_at')->get(['budgets.id', 'budgets.name', 'budgets.user_id', 'users.email']); /** @var stdClass $entry */ foreach ($set as $entry) { $line = 'Notice: User #' . $entry->user_id . ' (' . $entry->email . ') has budget #' . $entry->id . ' ("' . Crypt::decrypt($entry->name) . '") which has no transactions.'; $this->line($line); } }