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) => dd($jobs->first()->remaining_jobs) /*array_search($job, $jobs->first()->remaining_jobs, true)*/, 'jobs' => function ($jobs) use ($job) { $remainingJobs = $jobs->first()->remaining_jobs; if (is_string($remainingJobs)) { $remainingJobs = json_decode($jobs->first()->remaining_jobs, true); } return array_search($job, $remainingJobs, 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); } }