创建验证规则
php artisan make:rule checkNameUnique
//存放在 app/Rules 目录中
<?php namespace AppRules; use IlluminateContractsValidationRule; use IlluminateSupportFacadesDB; class checkNameUnique implements Rule { protected $model; /** * Create a new rule instance. * * @return void */ public function __construct($modelName) { $this->model = $modelName; DB::connection()->enableQueryLog(); } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { $id = request('id'); if(!empty($id)){ $map[] = ['id', '<>' ,$id]; } $map[] = ['is_del', '=', 1]; $map[] = [$attribute, '=', $value]; $res = DB::table($this->model)->where($map)->first(); if($res){ return false; } return true; } /** * Get the validation error message. * * @return string */ public function message() { return '名称已存在'; } }
//验证中调用自定义验证规则 public function rules() { return [ // 'brand_name' => 'required | unique:brands,brand_name', 'brand_name' => ['required', new checkNameUnique('brands')], 'brand_img' => 'image', ]; }