addConnection([ 'driver' => 'sqlite', 'database' => __DIR__ . '/database.sqlite', ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); $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) { /** @var Product $productModel */ $productModel = Product::firstOrNew(['skuID' => $product->skuID]); $productModel->skuID = $product->skuID; $productModel->name = $product->name; $productModel->availableQuantity = $product->availableQuantity; $productModel->stock = $product->stock; $productModel->categories = json_encode($product->categories); $productModel->image = $product->image; $productModel->subTitle = $product->subTitle; $productModel->variantCode = $product->variantCode; $productModel->modelCode = $product->modelCode; $productModel->url = $product->url; $productModel->save(); $priceExists = $productModel->price()->whereRaw("strftime('%Y-%m-%d', created_at) = ?", [date('Y-m-d')])->exists(); if (!$priceExists) { $price = new Price(); $price->price = $product->productPrice; $price->productStandardPrice = $product->productStandardPrice; $price->lowestProductPrice30Days = $product->lowestProductPrice30Days; $productModel->price()->save($price); } echo "."; } echo "\n"; } while ((bool)$responseObject->canLoadMore);