php - 批准请假时扣除总假期
问题描述
我在表用户和列天数中的总休假和表休假中的状态。我试图用批准休假但未更新的休假天数来扣除总休假。我试过这个代码。
该功能是供申请人申请休假的。
public function store(Request $request){
$dateFrom = Carbon::createFromFormat('Y-m-d', $request->date_from);
$dateTo = Carbon::createFromFormat('Y-m-d', $request->date_to);
$days_taken = $dateFrom->diffInDays($dateTo)+1;
if($request->leave_id == 1){
if($days_taken > auth()->user()->total_annual){
return redirect()->route('admin.leaverequest.create')->with('error', 'Leave exceed');
}
}
else{
return redirect()->route('admin.leaverequest.index')
->with('success', 'Leave Application Submitted');
}
Application::create([
'user_id'=>auth()->user()->id,
'leave_id'=>$request->leave_id,
'date_from'=>$request->date_from,
'date_to'=>$request->date_to,
'days_taken'=> $dateFrom->diffInDays($dateTo)+1,
]);
return redirect()->route('admin.leaverequest.index')
->with('success', 'Leave Application Submitted');
}
这是批准/拒绝请假请求的功能。
public function approval(Request $request, $id){
$leaverequest = Application::find($id);
if($leaverequest->status = $request->approve){
$leaverequest->save();
return redirect()->back();
}
elseif($leaverequest->status = $request->reject){
$leaverequest->save();
return redirect()->back();
}
}
此功能用于计算每次请假被批准时扣除总请假。如果没有,总休假将保持不变。
public function leaveBalance(Request $request, $id){
$leaverequest = Application::all();
$days_taken = $request->days_taken;
$annual_balance = User::find($id);
if($request->status == 1){
$annual_balance->total_annual = $annual_balance->total_annual - $days_taken;
$annual_balance->save();
return redirect()->route('home');
}
}
除了 leaveBalance 函数外,其他函数似乎运行良好。我试过使用这段代码,但也没有用。
auth()->user()->total_annual = auth()->user(->total_annual - $days_taken;
auth()->user()->save();
解决方案
第一个代码看起来不错,但是如果您遇到错误或没有更新记录,那么我建议首先调试您的代码,所有变量的值都类似于 $annual_balance = User::find($id); 你得到这个数据了吗?如果你得到所有东西然后尝试将 $annual_balance->total_annual 存储在一个变量中,然后从变量中减去代码。
function leaveBalance(Request $request, $id){
$leaverequest = Application::all();
$days_taken = $request->days_taken;
$annual_balance = User::find($id);
if($request->status == 1){
$total_annual = $annual_balance->total_annual;
$annual_balance->total_annual = $total_annual - $days_taken;
$annual_balance->save();
return redirect()->route('home');
}
}
// 或者你可以尝试使用 DB,如果上面的方法不起作用,别忘了在 Controller 上添加 Use DB。
$affected = DB::table('users')
->where('id', $id)
->update(['total_annual' => $total_annual]);
推荐阅读
- android - 将两个数据类绑定到一个片段 - Android Kotlin
- algorithm - 查找 XOR 和为零的数组数量
- google-bigquery - 特殊组成员时的 BigQuery 数据集访问
- mongodb - mongo db 没有在 centos 7 上启动
- python - 是否有计算项目产品价值的循环?
- ios - Vapor 3.1.10 Xcode-11.3.1 编译问题
- javascript - 禁用除 IE 之外的所有浏览器的 HTML5 AppCache
- c - 如何从一个数组中找到每个分支的百分比?在 C 中(已回答)
- zk - 如何在 zk-calendar 中将任何日/周/月设置为默认视图?
- python - 迁移错误“OperationalError at /admin/accounts/userstripe/ no such table:accounts_userstripe”