suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die is_unique-Regelvalidierung in Codeigniter 4 löst beim Aktualisieren des Datensatzes einen nicht eindeutigen Fehler aus

Ich habe ein einfaches Formular, das einige Daten in einer Datenbank speichert, und für das Feld Titel habe ich neben anderen Regeln eine Validierungsregel is_unique. Hier sind meine TaskModel-Validierungsregeln:

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'
    ];

Jetzt funktioniert beim Hinzufügen von Daten zur Datenbank alles wie erwartet. Das Problem ist, wenn ich versuche, den Datensatz zu aktualisieren, sagen wir, ich habe den Namen des Autors geändert, und wenn ich das Formular abschicke, heißt es, dass der Titel eindeutig sein sollte. Ich möchte, dass die Datensatzzeile in der Datenbank, die ich bearbeite, ignoriert wird und die Eindeutigkeit der Eingabe mit anderen überprüft wird. Können Sie mir helfen, dies zu erreichen? Ich denke darüber nach, die Datensatz-ID durch das Formular zu übergeben und sie bei der Prüfung auf Eindeutigkeit zu ignorieren, weiß aber nicht, wie ich die ID an die Validierungsregel übergeben soll.

P粉617597173P粉617597173325 Tage vor526

Antworte allen(1)Ich werde antworten

  • 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}

    希望这有帮助:(

    Antwort
    0
  • StornierenAntwort