php - 进行 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',
]);
解决方案
推荐阅读
- docker - 无法连接到服务器:主机名可能不为空
- excel - 在 Excel 中使用文本导入向导复制矩阵
- html - TinyMCE and Drag Conflict Issues
- javascript - Vue.js 组件不会通过其数据更改其 HTML 输出
- html - Changing div based on color behind it
- python - 为什么 Python 元组中的整数比较会给出不同的答案?
- ruby - Rails GraphQL: Parameter of resolver-methods - Meaning of the semicolon-suffix?
- apache-zookeeper - Zookeeper 没有这样的文件或目录
- compiler-errors - 在jetson arm64 nvidia-docker env中编译opencv-python的自定义版本时出错
- c++ - 如何清除 IE WebBrowser Control cookie