首页  >  问答  >  正文

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

我有一个简单的表单,在数据库中存储一些数据,对于 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粉617597173P粉617597173306 天前481

全部回复(1)我来回复

  • P粉752479467

    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}

    希望这有帮助:(

    回复
    0
  • 取消回复