我有一個簡單的表單,在資料庫中儲存一些數據,對於 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}
希望這有幫助:(