我有一个正在运行的PHP程序来处理耗材库存。快速处理PHP代码
我希望此代码在打开页面时更快处理耗材的余额。
SUPPLIES包含耗材及其余额的库存。
交易包含接收,退货和发行的交易。
下面的程序检索表的SUPPLIES和TRANSACTIONS,并计算所有更新MYSQL SUPPLIES表的TRANSACTIONS的余额。
<?php
//Update supplies balance starts here
$supplies = DB::getInstance()->query("SELECT * FROM supplies ORDER BY id DESC");
foreach($supplies->results() as $supply) {
$balance = 0;
$transactions = DB::getInstance()->query("SELECT * FROM transactions ORDER BY id ASC");
foreach($transactions->results() as $transaction) {
if($transaction->code === $supply->id){
if($transaction->transaction_type === "1"){
$balance = $balance + $transaction->quantity;
} else if($transaction->transaction_type === "2"){
$balance = $balance - $transaction->quantity;
} else if($transaction->transaction_type === "3"){
$balance = $balance + $transaction->quantity;
}
}
}
$supplied = new Supply();
$supplied->find($supply->id);
try {
$supplied->update(array(
'balance' => $balance,
));
} catch (Exception $e) {
die($e->getMessage());
}
}
//Update supplies balance ends here
?>
请正确缩进代码,以便阅读。然后想想当你在彼此内部有这么多循环时会发生什么,以及为什么你需要它们。为什么不根据条件从数据库中选择而不是在PHP代码中循环? –
您正在为'supplies'表中的每个条目选择整个'transactions'表。你最大的提升速度是在'$ supplies-> results()'循环之外设置'$ transactions'。 – Phylogenesis
@Sami Kuhmonen我知道如何根据条件从数据库中进行选择。我的问题在于如何在用户打开页面时使用TRANSACTIONS表中的日期定期更新SUPPLIES表。 :( – chuybenchuy