是否有办法在两个日期之间取数字并在Laravel中减去

问题描述

因此,我一直在尝试寻找一种方法来获取/获取字段“从”和“至”中的两个日期之间的数字(离开表格),然后获取该数字(例如7),然后减去用户表中的另一个数字a字段中的leaveBalance的默认数字为20,因此我希望该数字为(20 -7),并将结果保存在请求请假的特定用户中,此后的那一个LeaveBalance字段为更改后,还可以添加一条if语句来检查日期之间的数字是否大于为使我们返回错误消息而在LeaveBalance上允许的数字

这是请假表

  1. id
  2. user_id
  3. 来自
  4. 类型
  5. 说明
  6. 状态
  7. 消息

user表具有leaveBalance字段,并且两个表没有外键关系,请假上的user_id仅在创建请假时存储该经过身份验证的用户的id,然后仅显示该id的叶子在用户视图上创建

这是请假控制器

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');

    }

这是请假模式:

{
    use Notifiable;

    protected $guarded=[];
    
    public function user(){
        return $this->belongsTo(User::class,'user_id','id');   
     }
}

这是请假的视图

<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="">

我愿意在其中使用碳,我对碳并不真正了解,但是我知道它用于日期等,但是因为我使用日期选择器,这有可能吗?

解决方法

您可以使用它来检查是否要了解他休假了多少天,并且可以建立函数来执行此操作并返回结果

$from = new DateTime("2020-08-20");
$to = new DateTime("2020-08-28");

$diff = $to->diff($from)->format("%a"); // 8

然后将其传递给结果,美洲虎可以帮助您实现这一目标

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/css/tempusdominus-bootstrap-4.min.css" />



    <div class="container">
                        <div class='col-md-5'>
                            <div class="form-group">
                                <div class="input-group date" id="datetimepicker7" data-target-input="nearest">
                                    <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker7"/>
                                    <div class="input-group-append" data-target="#datetimepicker7" data-toggle="datetimepicker">
                                        <div class="input-group-text"><i class="fa fa-calendar"></i></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class='col-md-5'>
                            <div class="form-group">
                                <div class="input-group date" id="datetimepicker8" data-target-input="nearest">
                                    <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker8"/>
                                    <div class="input-group-append" data-target="#datetimepicker8" data-toggle="datetimepicker">
                                        <div class="input-group-text"><i class="fa fa-calendar"></i></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>





<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" integrity="sha512-rmZcZsyhe0/MAjquhTgiUcb4d9knaFc7b5xAfju483gbEXTkeJRUMIPk6s3ySZMYUHEcjKbjLjyddGWMrNEvZg==" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.0-alpha14/js/tempusdominus-bootstrap-4.min.js"></script>

<script type="text/javascript">
                $(function () {
                    $('#datetimepicker7').datetimepicker({
                        format: 'DD-MM-YYYY',minDate: moment.now(),});
                    $('#datetimepicker8').datetimepicker({
                        useCurrent: false,format: 'DD-MM-YYYY'
                    });
                    $("#datetimepicker7").on("change.datetimepicker",function (e) {
                        var addNewDay = moment(e.date,"DD-MM-YYYY").add(1,'d').format('DD-MM-YYYY');
                        console.log(addNewDay);
                        $('#datetimepicker8').datetimepicker('minDate',addNewDay);
        
                    });
                    $("#datetimepicker8").on("change.datetimepicker",function (e) {
                        $('#datetimepicker7').datetimepicker('maxDate',e.date);
                    });
                });
            </script>
,

这是一个可以发展的想法,以便完成有关选择休假类型的ajax,并返回休假的可用天数,然后可以通过datetimepicker函数添加此数字,我希望我成功了使我的想法更紧密。谢谢。

    public function getUserLeave(Request $request)
{
    if ($request->ajax()) {
        $type = $request->type;
        $user_id = $request->user_id;

        $leaves = Leave::where('user_id',$user_id)->where('type',$type)->where(function ($q) {
            $date = Carbon::now();
            $q->where('from','<=',date('Y-01-01',strtotime($date))); // 2020-01-01
            $q->where('to','>=',date('Y-m-d',strtotime($date))); // 2020-08-27
        })->get();

        if (count($leaves) > 0) {
            $dateLeave = array();
            foreach ($leaves as $leave) {
                $leave_from = $leave->from;
                $leave_to = $leave->to;

                $diff = $leave_to->diff($leave_from)->format("%a");
                $dateLeave[] = $diff;

            }

            $dateLeaveSum = array_sum($dateLeave);

            // add type of leave
            $annual_leave = 30;
            $sick_leave  = 5;

            if ($type === 'annual_leave'){
                $value =   ($annual_leave - $dateLeaveSum);
                return response()->json($value);

            }

            if ($type === 'sick_leave'){
                $value =   ($sick_leave - $dateLeaveSum);
                return response()->json($value);

            }

        }
    }
}
,

例如

public function up()
    {
        Schema::create('types',function (Blueprint $table) {
            $table->id();
            $table->string('name')->unique();
            $table->string('days')->unsigned();
            $table->timestamps();
        });
    }

在表叶子中添加新的列名称type_id

$table->foreignId('type_id')->nullable()->constrained()->onDelete('cascade');

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...