addConnection([ 'driver' => 'sqlite', 'database' => __DIR__ . '/database.sqlite', ]); $capsule->setAsGlobal(); $client = new GuzzleHttp\Client(); $page = 0; do { $res = $client->request('POST', 'https://pl.ryobitools.eu/api/product-listing/get-products', [ 'form_params' => [ "includePreviousPages" => false, "pageIndex" => $page, "pageSize" => 100, "cultureCode" => "pl-PL", ] ]); $page++; $responseObject = json_decode($res->getBody()->getContents()); $products = $responseObject->products; foreach ($products as $product) { Capsule::table('product')->updateOrInsert([ 'skuID' => $product->skuID, ], [ 'name' => $product->name, 'availableQuantity' => $product->availableQuantity, 'stock' => $product->stock, 'categories' => json_encode($product->categories), 'image' => $product->image, 'subTitle' => $product->subTitle, 'variantCode' => $product->variantCode, 'modelCode' => $product->modelCode, 'url' => $product->url, 'updated_at' => date('Y-m-d'), ]); $databaseProduct = Capsule::table('product')->where('skuID', '=', $product->skuID)->first(); Capsule::table('price')->updateOrInsert([ 'product_id' => $databaseProduct->id, 'created_at' => date('Y-m-d'), ], [ 'price' => $product->productPrice, 'productStandardPrice' => $product->productStandardPrice, 'lowestProductPrice30Days' => $product->lowestProductPrice30Days, ]); echo "."; } echo "\n"; } while ((bool)$responseObject->canLoadMore);