Codeigniter 4 is_unique规则验证在我更新记录时抛出非唯一错误

n3schb8v  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个在数据库中存储一些数据的简单表单,对于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传递给验证规则。

roejwanj

roejwanj1#

您可以在is_unique规则中将行的ID作为参数传递。

is_unique[tasks.Title,Id,{Id}]

希望这对你有帮助:)

更新:更详细的说明

第二个参数Id是数据库字段名称。第三个参数是从表单传递的Id。为此,请在编辑表单中添加一个隐藏字段,然后设置其name = Idvalue=$data['Id']。其中$data['Id']是从数据库中提取并传递给视图的行的Id。因此,何时提交表单以及Id将在$_POST中提交。然后将其传递给规则参数,如下所示:{Id}

希望这对你有帮助

相关问题