get($url, ['q' => 'iphone', 'limit' => $limit, 'skip' => $skip]); if($response->successful()){ $json = $response->json(); $products = $response->json('products'); $skip = $response->json('skip'); $total = $response->json('total'); $this->upsertProducts($products); $skip += $limit; $this->info('Received ' . count($products) . ' records'); } else { $this->error('Error on HTTP request!'); } } while($skip < $total); $this->info('Total: ' . $total); } protected function upsertProducts($products):void { foreach ($products as $product){ $tags = $product['tags']; // $reviews = $product = $this->arrayKeysCamelToSnake($product); Product::query()->updateOrInsert(['id' => $product['id']], $product); } } protected function arrayKeysCamelToSnake($arr): array { $ret = []; foreach ($arr as $k => $v) $ret[Str::snake($k)] = $v; return $ret; } }