我有一个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();
$response
value是一个硬币数组,例如:
[
{
"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