我在表用户和列天数中有列总休假以及在表休假中的状态。我试图用批准休假时的休假天数来扣除总休假,但没有更新。我试过这个代码。
此功能供申请人申请休假。
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();
答案 0 :(得分:0)
第一个代码看起来不错,但是如果您收到错误或未更新记录,那么我建议首先调试您的代码,所有变量都具有类似 $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]);