从外部API更新Laravel模型



我有一个Coin模型与id,name,price

在一个函数中,我提取了所有的硬币,并创建了一个用逗号分隔的字符串,其中包含所有的id:

$coins = Coin::all();
$coinsIds = $coins->pluck('id')->toArray();
$coinsIdsString = implode(',', $coinsIds);

之后,我调用一个外部API:

$url = 'https://myapi.com?ids' . $coinsIdsString;
$response = Http::get($url)->json();

$responsevalue是一个硬币数组,例如:

[
{
"id":"1",
"name":"A",
"price":"1.2",
},
...
]

用API的price值更新和保存我的硬币模型的最佳方法是什么?

不幸的是,除了一次更新一条记录之外,您将无法做任何事情。也就是说,循环遍历数组的结果,并对每条记录执行数据库更新。我的建议是

$results = ... // Result of API call;
foreach ($results as $result) {
DB::table('coins')
->where('id', $result['id'])
->update(['price' => $result['price']]);
}

然后我将创建一个计划命令来定期执行更新,因为根据调用的数量,它可能是资源密集型的。

https://laravel.com/docs/8.x/scheduling scheduling-artisan-commands

最新更新