我有一个在数据库中存储一些数据的简单表单,对于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传递给验证规则。
1条答案
按热度按时间roejwanj1#
您可以在is_unique规则中将行的ID作为参数传递。
希望这对你有帮助:)
更新:更详细的说明
第二个参数Id是数据库字段名称。第三个参数是从表单传递的Id。为此,请在编辑表单中添加一个隐藏字段,然后设置其
name = Id
和value=$data['Id']
。其中$data['Id']
是从数据库中提取并传递给视图的行的Id。因此,何时提交表单以及Id将在$_POST
中提交。然后将其传递给规则参数,如下所示:{Id}
希望这对你有帮助