2 回答

TA貢獻2065條經驗 獲得超14個贊
您想更新所有收到的發票的信息,但將唯一未支付的發票保存到$this->filteredResults. 您可以在$this->saveInvoices()方法中移動“過濾器邏輯” ,這將解決問題。
$response = collect(\GuzzleHttp\json_decode($response->getBody()->getContents()));
$this->saveInvoices($response);
public function saveInvoices($invoices)
{
foreach ($invoices as $item) {
//If it wasn't paid and dueDate not passed, then save it to $this->filteredResults
if(($item['paid'] === false) && ($item["dueDate"] <= $now)){
$collection = collect($item);
array_push($this->filteredResults, $collection->only(['invoiceNumber', 'customerId', 'customerName', 'dueDate', 'invoiceDate', 'amountInOriginalCurrency', 'paid'])->toArray());
}
//Then update invoice information, regardless of paid status
UnpaidInvoices::updateOrCreate(
['invoiceNumber' => $item['invoiceNumber']],
['invoiceNumber' => $item['invoiceNumber'],
'customerId' => $item['customerId'],
'customerName' => $item['customerName'],
'dueDate' => $item['dueDate'],
'invoiceDate' => $item['invoiceDate'],
'amountInOriginalCurrency' => $item['amountInOriginalCurrency'],
'paid' => $item['paid']]);
}
}

TA貢獻1876條經驗 獲得超5個贊
確保您在 DB 中設置了良好的索引。
僅從后端返回您真正需要的內容(前端沒有過濾)
在檢索集合/數組后,更新記錄更改應是一個單獨的調用,可能最簡單的方法是再次調用以獲取最新結果(第 1 點)。
添加回答
舉報