我在laravel中的两列验证方面遇到问题
我有一个表{strong> work_hours ,其中有user_id
以及日期和小时,并且我有多个用户,因此我需要给用户机会添加他的小时数,但在特定日期只能添加一次例子
在user_id = 9
上于2018年3月28日添加8小时,但仅一次,如果用户尝试再次添加,则在user_id = 9
上于2018年3月28日添加8小时,他具有该日期的信息已经采取了。
我写了验证:
$validator = Validator::make($request->all(), [
'date' => 'unique:work_hours',
'name_of_hours' => 'required',
]);
但是这项工作是,如果某位用户在2018年3月28日为user_id = 9
,user_id=10
或其他用户添加了8小时,则无法在同一日期添加时间。
因此,我需要同时验证两列user_id
和日期,但我不知道该怎么做。
答案 0 :(得分:1)
这听起来像是关闭的好例子。
$validator = Validator::make($request->all(), [
'date' => function ($attribute, $value, $fail) {
// check the table for the date and current user
$date = DB::table('work_hours')->where([
['date', $value],
['user_id', Auth::user()->id]
])->first();
// if it exists then you fail
if ($date) $fail($attribute.' is invalid.');
},
'name_of_hours' => 'required',
]);
您可以在此处查看文档:{{3}}