📅  最后修改于: 2023-12-03 15:32:37.455000             🧑  作者: Mango
在Laravel中,我们可以使用唯一性验证规则来验证表单中的数据是否在数据库中唯一。但是,在更新现有数据时,我们需要排除当前记录的这个唯一值。在这种情况下,我们可以使用“更新时唯一验证”。
首先,我们需要将唯一性验证规则更改为使用“unique”规则的第三个参数。这个参数是一个数字,它表示应该排除的记录的ID值。如果我们正在存储新记录,则传递null。在更改记录时,我们将传递当前记录的ID值。
$request->validate([
'email' => [
'required',
'email',
Rule::unique('users')->ignore($user->id),
],
]);
此代码将验证电子邮件地址是否在“用户”表中唯一,但排除了ID为“$user->id”的记录。注意,我们使用Laravel的Rule类中的unique方法来创建规则。
如果使用其他字段进行验证,可以添加更多参数:
$request->validate([
'username' => [
'required',
Rule::unique('users')->ignore($user->id, 'id_column_name')
],
]);
此代码将使用“唯一性验证”验证用户名,但排除了ID为“$user->id”的记录,并指定表中ID列的名称。
使用更新时的唯一验证可以防止在更新现有记录时出现唯一约束冲突。Laravel维护了易于使用的unique规则,使唯一验证变得更加容易。