首页 > 解决方案 > 进行 laravel 自定义验证,将每日工作时间限制为 8 (Laravel 8)

问题描述

在我的应用程序中,员工在一天结束时填写表格,他可以选择他从事的项目,插入当天的日期和工作时间,最多 8 个;例如,员工 1 在项目 A 上花费 4 小时,在项目 B 上花费 4 小时。我设法将给定员工的时间限制为 8 小时,但我不知道如何说这是指日期,所以如果今天员工工作 8 小时,明天他将无法填写表格,因为验证表明他通常只能工作 8 小时。

这是在 AppServiceProvider 的 boot() 内部

        Validator::extend('daily_hours', function ($attribute, $value, $parameters)
        {
            list($table, $field, $field2, $field2Value) = $parameters;
            return DB::table($table)->where($field2, $field2Value)->sum('hours')+$value<=8;

        },'Reached max daily hours: 8');

并在控制器文件中

$validator = Validator::make($request->all(), [
    'today_date' => 'required|date',
    'hours' =>'daily_hours:hours_cards,hours,user_id,' . Auth::id(),
    'notes' => 'max:200',
    'user_id' => 'required',
    'project_id' => 'required',

]);

标签: phpvalidationlaravel-8

解决方案


推荐阅读