我有一個簡單的表單,可以在資料庫中存盤一些資料,對于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 傳遞給驗證規則。
uj5u.com熱心網友回復:
您可以在is_unique規則中將行的 ID 作為引數傳遞。喜歡
is_unique[tasks.Title,Id,{Id}]
希望這可以幫助 :)
更新:更詳細的解釋
第二個引數Id是資料庫欄位名稱。第三個是從表單傳遞的Id。為此,在編輯表單中添加一個隱藏欄位,然后設定它的name = Id和它的value=$data['Id']. 從資料庫中獲取并傳遞給視圖的行$data['Id']的ID在哪里。所以當表單將被提交并且Id將被提交到$_POST. 然后將其傳遞給規則引數:
{Id}
希望這可以幫助 :(
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497855.html
標籤:php 代码点火器 验证 codeigniter 查询生成器
