获取两个日期的差值,并将其从人力资源表中减去



所以我正试图弄清楚如何实现这一点,我有一个休假申请(目前只是一个存储数据的表单(,它应该删除;授予的天数";例如基于它们的日期的年假或病假;从2020年8月27日";以及";至2020年8月30日";这是3天,我想从日期之间获得这些数字,并在leave_days_granted字段的用户表中(它总是有默认值20(将其删除,所以leave_ddays_granted-3=17类似于这样的东西,这样我就可以在视图中显示该用户离开的人数

我已经在用户模型中添加了这个

class User
{
public function leaveBalance()
{
$daysUsed = $this->leaves->map->numberOfDays()->sum();
return $this->leave_days_granted - $daysUsed;
}
// You can also add a helper to make your controller more readable.
public function hasAvailableLeave()
{
return $this->leaveBalance() > 0;
}
public function leaves()
{
return $this->hasMany(AppLeave::class);
}
}

这是在Leave Model 中添加的

class Leave
{
protected $dates = ['from', 'to'];
public function numberOfDays()
{
return $this->from->diffInDays($to);
}
}

所以在这里,我不明白为什么这不起作用——当我请求休假时,它没有改变数据库中的任何内容,我现在不确定我是否应该在休假控制器上添加更多内容来调用它或休假的视图

这就是我在视图上获取日期的方式

<div class="card-body">
<form method="POST" action="{{route('leaves.store')}}">
@csrf
<div class="form-group">
<label>From Date</label>
<div class="col-md-6">
<input class="datepicker" type="text" class="form-control @error('from') is-invalid @enderror" name="from" required="">
@error('from')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group">
<label>To Date</label>
<div class="col-md-6">
<input class="datepicker1" type="text" class="form-control @error('to') is-invalid @enderror" name="to" required="">

这是表单链接这是用户表链接这是叶子表链接

这是LeaveController

public function index()
{
if(Auth::guard('admin')->check())
{
$users = User::all();
$leaves = Leave::latest()->paginate(5);
return view('admin/leave/index', compact('leaves'),compact('users'));
}
$role = Auth::guard('web')->user()->role_id;
if($role == 1)
{
return view('unauthorized');
}
else
{
$leaves = Leave::latest()->paginate(5);
return view('admin/leave/index', compact('leaves'));
}


}
public function create()
{
$leaves = Leave::latest()->where('user_id',auth()->user()->id)->paginate(5);
return view('leave.create',compact('leaves'));
}
public function store(Request $request)
{
$this->validate($request,[
'from'=>'required',
'to'=>'required',
'description'=>'required', 
'type'=>'required'
]);
$data=$request->all();
$data['user_id']=auth()->user()->id;
$data['message']='';
$data['status']=0;
$leave =Leave::create($data);

$admins = Admin::all();
$users = User::where('role_id', 2)->get();
foreach ($admins as $admins) {
foreach($users as $users){
$admins->notify(new LeaveSent($leave));
$users->notify((new LeaveSent($leave)));
}
}
return redirect()->back()->with('message','Leave Created');
}

我知道您有一个用户有20天的假期或权限。

您需要为每个休假请求计算休假天数,并扣除每个用户的可用天数

我做这个:

  1. 对象Carbon 中的转换日期

  2. 获得不同天数的

  3. 用户可用的更新天数

  4. 在您的控制器中

    //transform dates in object Carbon
    $from = Carbon::parse($request->from);
    $to = Carbon::parse($request->to);
    //get diff days
    $diff = $from->diffInDays($to)
    //find user and deduct days
    $user = User::findOrFail(Auth::user()->id);
    $user->days_availables = $user->days_availables - $diff
    $user->update();
    

您可以在以下位置使用Carbon库了解更多信息:https://carbon.nesbot.com/docs/

最新更新