-
Anonymous
Как быстро загрузить данные из Nova Postha Api в свою базу данных (30 000 записей)? [закрыто]
Сообщение
Anonymous »
Код: Выделить всё
public function updateWarehouses()
{
$settlements = NovaPoshtaSettlement::all();
foreach ($settlements as $settlement) {
$page = 1;
$limit = 1500;
do {
$response = Http::timeout(10000)->post('https://api.novaposhta.ua/v2.0/json/', [
'apiKey' => config('services.novaposhta.api_key'),
'modelName' => 'AddressGeneral',
'calledMethod' => 'getWarehouses',
'methodProperties' => [
'SettlementRef' => $settlement->ref,
'Page' => $page,
'Limit' => $limit,
],
]);
if ($response->successful()) {
$warehouses = $response->json()['data'];
foreach ($warehouses as $warehouse) {
NovaPoshtaWarehouse::updateOrCreate(
[
'ref' => $warehouse['Ref'],
],
[
'settlement_id' => $settlement->id,
'description' => $warehouse['Description'],
'short_address' => $warehouse['ShortAddress'],
'type_of_warehouse' => $warehouse['TypeOfWarehouse'],
'number' => $warehouse['Number'],
]
);
}
if (count($warehouses) < $limit) {
break;
}
}
$page++;
} while (true);
}
}
NovaPoshtaWarehouse::upsert($warehousesData, ['ref'], ['settlement_id', 'description', 'short_address', 'type_of_warehouse', 'number', 'updated_at']);
Но это плохо.
Подробнее здесь:
https://stackoverflow.com/questions/787 ... 0-000-reco
1720033207
Anonymous
[code]
public function updateWarehouses()
{
$settlements = NovaPoshtaSettlement::all();
foreach ($settlements as $settlement) {
$page = 1;
$limit = 1500;
do {
$response = Http::timeout(10000)->post('https://api.novaposhta.ua/v2.0/json/', [
'apiKey' => config('services.novaposhta.api_key'),
'modelName' => 'AddressGeneral',
'calledMethod' => 'getWarehouses',
'methodProperties' => [
'SettlementRef' => $settlement->ref,
'Page' => $page,
'Limit' => $limit,
],
]);
if ($response->successful()) {
$warehouses = $response->json()['data'];
foreach ($warehouses as $warehouse) {
NovaPoshtaWarehouse::updateOrCreate(
[
'ref' => $warehouse['Ref'],
],
[
'settlement_id' => $settlement->id,
'description' => $warehouse['Description'],
'short_address' => $warehouse['ShortAddress'],
'type_of_warehouse' => $warehouse['TypeOfWarehouse'],
'number' => $warehouse['Number'],
]
);
}
if (count($warehouses) < $limit) {
break;
}
}
$page++;
} while (true);
}
}
NovaPoshtaWarehouse::upsert($warehousesData, ['ref'], ['settlement_id', 'description', 'short_address', 'type_of_warehouse', 'number', 'updated_at']);
[/code]
Но это плохо.
Подробнее здесь: [url]https://stackoverflow.com/questions/78702869/how-to-quickly-upload-data-from-the-nova-postha-api-to-your-database30-000-reco[/url]