【发布时间】:2018-08-29 09:22:03
【问题描述】:
我的问题找不到答案,希望有人能帮助我
我想验证我是否添加了一个新的约会,而所选员工在约会当天尚未被选中。所以我不能在一天内重复预订某人。 我正在使用 laravel 5.6 和 MySQL 与表约会使用以下行: id、day、employee_id 和 resource_id
我的控制器是一个资源控制器(具有索引、创建、存储等功能)。
因此,如果 $appointmentExists 为 1,我需要抛出错误并停留在创建表单的同一页面上。
public function store(Request $request)
{
$appointmentExist = \DB::table('appointments')
->where([
['day','=',$request->day],
['employee_id','=',$request->employee_id],
])
->exists();
$request->validate([
'day' => 'required|min:1|max:10',
'employee_id' => 'required',
'resource_id' => 'required',
$appointmentExist => 'in:0',
]);
$appointment = Appointment::create(['day' => $request->day, 'employee_id' => $request->employee_id, 'resource_id' => $request->resource_id]);
return redirect('/appointments/' . $appointment->id);
}
希望有人能帮忙
【问题讨论】:
-
如果你问数据库是否有记录,那并不意味着杰克。双重预订仍然是可能的。你要做的就是在
[day, employee_id]上设置一个唯一的约束,那么数据库肯定不会允许超过 1 条记录。下一步是插入数据。如果记录存在,Laravel 将抛出异常。代码23000表示duplicate record。您可以使用它来告诉您的用户已预约。
标签: php mysql laravel validation