thinkphp驗證器獲取$data資料,自定義驗證,多條件唯一性驗證unique驗證
thinkphp驗證器獲取$data資料,自定義驗證,多條件唯一性驗證,軟刪除驗證唯一性,unique驗證
問題描述
專案中使用軟刪除,資料刪除後驗證器裡唯一性驗證不通過,需要位元組拼接條件
如下
// 複雜驗證條件
'name' => 'unique:user,status=1&account='.$data['account'],
但是預設rule規則裡不能直接獲取到$data
解決方法
使用自定義驗證拿到$data再驗證唯一性
程式碼
class Teacher extends Validate
{
protected $rule = [
'name' => 'require|max:20',
'user_name' => 'require|max:20|unique:teacher',
'role_id' => 'number',
'mobile' => 'mobile|checkMobile',
];
// 自定義驗證規則
protected function checkMobile($value,$rule,$data=[])
{
$rule = ['mobile' => 'unique:teacher,delete_time=0&mobile='.$data['mobile'],];
return $this->check($data,$rule);
}
protected $message = [
'name.max' => '姓名不能超過20個字元',
'name.require' => '姓名不能為空',
'user_name.max' => '使用者名稱不能超過20個字元',
'user_name.require' => '使用者名稱不能為空',
'mobile.mobile' => '手機號碼錯誤',
'mobile.unique' => '手機號碼存在,請確認後重新填寫',
];
}
日誌記錄執行sql如下
LOG: SELECT `id` FROM `teacher` WHERE `delete_time` = 0 AND `mobile` = '18812345678' LIMIT 1
相關文章
- mongoose使用validate驗證, 獲取自定義驗證資訊Go
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- 自定義react資料驗證元件React元件
- 6. 自定義容器型別元素驗證,類級別驗證(多欄位聯合驗證)型別
- 如何驗證獲取S/MIME郵件安全證書
- 前端獲取驗證碼前端
- Laravel 自定義表單請求驗證忽略某些欄位驗證Laravel
- 為你的 Laravel 驗證器加上多驗證場景Laravel
- Layui 自定義表單驗證UI
- gin自定義驗證器&轉化中文
- 驗證碼原理及驗證
- js 獲取驗證碼計時器JS
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- Android自定義View---驗證碼AndroidView
- SpringBoot-表單驗證-統一異常處理-自定義驗證資訊源Spring Boot
- Laravel 驗證類 實現 路由場景驗證 和 控制器場景驗證Laravel路由
- JavaScript驗證碼生成和驗證效果JavaScript
- HTTP 快取驗證HTTP快取
- HTML5 setCustomValidity()自定義驗證資訊HTML
- HTML5 setCustomValidity() 自定義驗證資訊HTML
- jQuery Validate自定義驗證錯誤資訊jQuery
- ios 手機驗證碼獲取iOS
- 沒收到驗證郵件
- SSL證書是如何驗證的?驗證方式推薦
- jQuery Validate新增自定義驗證規則jQuery
- 表單驗證自定義格式輸出
- gRPC(七)進階:自定義身份驗證RPC
- 驗證碼---js重新整理驗證碼JS
- easy-captcha實現驗證碼驗證APT
- 表單資料驗證
- 驗證資料是否存在
- lumen驗證類 實現控制器場景驗證
- 登入驗證判斷,獲取後臺資料
- 自定義一個簡單的資料模型驗證器類,可用於各類驗證場景,待後續完善模型
- Laravel unique驗證 排除當前記錄Laravel
- 身份證驗證工具類
- 需求驗證
- livewire 驗證