factoryService = $factoryService; parent::__construct(); } /** * Execute the console command. */ public function handle() { $type = $this->argument('type'); $batch = $this->argument('batch'); $job = $this->argument('job'); $items = $this->getBatch($type, $batch, $job); $this->processItems($items, $job); } private function getBatch(string $type, int $batch, string $job) { return ItemToFetch::has('jobs') ->with([ 'jobs' => fn ($jobs) => array_search($job, $jobs->first()->remaining_jobs, true), ]) ->where('type', $type) ->take($batch) ->get(); } private function processItems(\Illuminate\Database\Eloquent\Collection $items, $job) { foreach ($items as $item) { $this->processItem($item, $job); } } private function processItem($item, $job) { $this->factoryService->process($item, $job); } }