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