我有一个简单的表单,在数据库中存储一些数据,对于 Title 字段,我有一个 is_unique 验证规则以及其他规则。以下是我的 TaskModel 验证规则:
protected $validationRules = [ 'Title' => 'required|min_length[5]|max_length[15]|is_unique[tasks.Title]', 'Description' => 'required|max_length[300]', 'CreatedAt' => 'required', 'UpdatedAt' => 'required', 'DueDate' => 'required|ValidateDueDate[DueDate]', 'AssignedTo' => 'required', 'Author' => 'required' ];
现在,将数据添加到数据库时,一切都按预期运行。 问题是,当我尝试更新记录时,假设我更改了作者姓名,当我提交表单时,它说标题应该是唯一的。我希望它忽略我正在编辑的数据库中的记录行,并与其他人检查输入的唯一性。 你能帮助我实现这一目标吗?我正在考虑通过表单传递记录 ID,并在检查唯一性时忽略它,但我不知道如何将 ID 传递给验证规则。
P粉7524794672024-01-11 11:36:11
您可以将行的 ID 作为参数传递到 is_unique 规则中。喜欢
is_unique[tasks.Title,Id,{Id}]
希望这有帮助:)
更新:更详细的说明
第二个参数Id是数据库字段名称。第三个是从表单传递的Id。为此,在编辑表单中添加一个隐藏字段,然后设置其 name = Id
及其 value=$data['Id']
。其中 $data['Id']
是从数据库获取并传递到视图的行的 Id。因此,当提交表单时,Id 将在 $_POST
中提交。然后将其传递给规则参数:
{Id}
希望这有帮助:(