【发布时间】:2020-03-24 02:15:10
【问题描述】:
我使用的是 Yii2 基础版。我有一个名为 groupsavingdetails 的表,它存储每个组的每月储蓄。
假设我有一个组的成立日期是 2017-08-08。现在,在为该组创建每月储蓄记录时,我将选择组输入年份为 2017 年,月份为八月,然后输入所有值,这些值将为我提供八月的期末余额并保存在数据库中。
现在,当用户想要输入 10 月而不是 9 月时,他可以这样做,因为系统会将 8 月的期末余额显示为期初余额,并且他会在 10 月执行与 8 月相同的操作。
现在在输入 10 月后,用户必须不能输入 9 月的记录。
我有该组 2017 年以及 8 月、9 月、10 月、11 月和 12 月的记录。
发生的情况是,当我输入年份为 2018 年,月份为一月时,会显示警报消息,但不应显示该消息。
这里的条件在保存记录时失败。
$group = Yii::$app->db->createCommand('SELECT *
FROM groupsavingdetails
where groupsavingdetails.GroupId=:id
ORDER BY groupsavingdetails.GroupSavingDetailsId DESC LIMIT 1')
->bindValues([
':id' => $model->GroupId,
])->queryAll();
$year2=0;
$month3=0;
foreach($group as $groups) {
$model->OpeningBalance=$groups['ClosingBalance'];
$model->TotalValueofLoanGiven=$groups['TotalValueofLoanGiven'];
$model->LoanRepaidUptilNow=$groups['LoanRepaidUptilNow'];
$model->TotalValueOfLoanOutstanding=$groups['TotalValueOfLoanOutstanding'];
$year2=$groups['Year'];
$month3=$groups['Month'];
}
$identity = \Yii::$app->user->identity;
$eid = $identity->id;
$model->EmpId = $eid;
if($model->LoanGiven!=0) {
$model->TotalValueofLoanGiven+=$model->LoanGiven;
}
if($model->LoanRecovery!=0) {
$model->LoanRepaidUptilNow+=$model->LoanRecovery;
}
$model->TotalValueOfLoanOutstanding = $model->TotalValueofLoanGiven-$model->LoanRepaidUptilNow;
$previousMonth = $model->Month - 1;
if ($previousMonth == 0) {
$previousMonth = 12;
$year2--;
}
// Here the condition is getting failed.
if ($model->Year >= $year2 && $model->Month > $previousMonth) {
$model->ClosingBalance=($model->OpeningBalance+$model->TotalSaving+$model->LoanRecovery+$model->LoanInterest+$model->Fine+$model->BankInterest+$model->BankLoan-$model->Expenses-$model->LoanGiven);
$model->save();
} else {
echo "<script language='javascript'>";
echo "alert('Records greater than selected year and month exists.')";
echo "</script>";
return $this->render('create', [
'model' => $model,
]);
}
我应该改变什么?
【问题讨论】:
标签: php mysql yii2 yii2-basic-app