【发布时间】:2016-07-27 17:59:50
【问题描述】:
我有员工,它在数据库中具有(自动递增)唯一 ID(很简单 :))但我想检查其他字段的唯一性,这将是他们的员工编号 ..
在创建新员工时,这很容易,因为我只需调用:
$this->validate($request, [
'employee_number' => 'required|unique:employees'
]);
但是我如何在编辑现有员工时执行此操作?我想检查(如果“编辑的”员工编号对于 OTHER 用户是唯一的......这意味着我需要将此查询重写为 laravel 验证表单
employee_number NOT IN (SELECT employee_number
FROM employees
WHERE id = *edited_user_id*)
我试过这样做
$this->validate($request, [
'employee_number' => 'required|unique:employees,id,'.$input['employee_id']
]);
想象一下,“员工”表中有记录
id | name | employee_number
-----------------------------
1 | Peter | 0001
2 | Paul | 0002
3 | Frank | 0003
当我尝试更改 Frank 的数据时 -> 没关系 .. 即使我将他的员工编号更改为某个唯一的编号,它也可以正常工作 ..
但是,当我为弗兰克的帐户插入现有的帐户时,即 0001,它并没有给我一个正确的错误消息(来自验证器),表明员工编号已被占用.. 但不是那样,而是将我重定向到错误页面
Whoops, looks like something went wrong.
QueryException in Connection.php line 669:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0001' for key 'employees_employee_number' (SQL: *here comes the wrong sql query*)
您知道如何在表单上方显示正确的错误栏,例如当我尝试插入新员工并尝试插入现有 ID 时?
【问题讨论】:
标签: validation laravel