【发布时间】:2021-11-04 15:56:15
【问题描述】:
我正在用 Laravel 编写一个项目。我有一个循环,有很多这样的条件:
foreach ($transactionsGroupBys as $transactionsGroupBy) {
if ($this->checkExistSettlement($transactionsGroupBy, Carbon::today())) {
$this->setErrorLog('This settlement has already been created', $transactionsGroupBy);
continue;
}
try {
if ($this->doChunk()) {
$transactions = $this->getTransactions($transactionsGroupBy);
$maxAmountSettle = $this->configRepository->find('transaction_chunk:PUBLIC')->value;
$transactionChunk = app(ChunkTransaction::class)->chunk($transactions, $maxAmountSettle);
foreach ($transactionChunk as $chunk) {
$transactionsIds = collect($chunk->transactions)->pluck('id')->toArray();
$settlements[] = $this->insertSettlement($chunk->transactions_group_by, $transactionsIds)->toArray();
$this->setInfoLog("Created $counter/$countSettlements settlement", $chunk->transactions_group_by);
}
} else {
$transactions = $this->getTransactions($transactionsGroupBy, ['id']);
$transactionsIds = $transactions ? collect($transactions)->pluck('id')->toArray() : [];
$settlements[] = $this->insertSettlement($transactionsGroupBy, $transactionsIds)->toArray();
$this->setInfoLog("Created $counter/$countSettlements settlement", $transactionsGroupBy);
}
$counter += 1;
} catch (\Exception $exception) {
$this->setErrorLog($exception->getMessage());
continue;
}
}
我正在检查$this->doChunk(),如果为真,则运行其他循环。我觉得这段代码非常复杂,而且我有重复的代码。我需要新的模式来解决这个问题。
【问题讨论】: