Laravel Validator 实现两个或多个字段联合索引唯一
Laravel的Validation还是蛮好用的,使用Validator可以非常方便的验证表单,它提供了unique唯一性验证,但是默认只能验证一个字段,那遇到两个甚至多个字段的联合索引,需要满足复杂条件唯一性怎么实现呢
Validator复杂唯一性实现方法
我们可以用自定义 Rule 自定义验证规则,比如像这样:
[...] $where = [ 'name' => $request->name, 'phone' => $request->phone ]; $this->validate($request, [ "phone" => [ "required", Rule::unique('table_name') ->where(function ($query) use ($where) { return $query->where($where); }) ], ]); [...]
首先我们把原来的字符串形式,改成数组形式,在数组中用 Rule 去自定义新的规则,很显然 unique() 方法是对 unique 来自定义的,然后参数是表的名字,后面再跟一个 where 函数,用到了闭包,匿名函数查询同时满足两个条件的结果是否存在,返回查询结果。
如此,我们便完成了自定义复杂的唯一性验证。
总结
以上所述是小编给大家介绍的Laravel Validator 实现两个或多个字段联合索引唯一,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关推荐
-
Laravel4中的Validator验证扩展用法详解
本文实例讲述了Laravel4中的Validator验证扩展用法.分享给大家供大家参考,具体如下: 不管写接口还是写web页面,实质都是传入参数,然后进行业务逻辑,然后再输出具体内容.所以,对参数的验证是不可避免的一个环节,比如传过来的email是不是为空,是不是合法的email格式?laravel已经为phper想到简化这种逻辑的办法了.就是Validator. Validator的使用 制造一个验证器 validator使用Validator::make可以制造一个验证器.然后使用验证器判断
-
如何优雅的使用 laravel 的 validator验证方法
web 开发过程中经常会需要进行参数验证,laravel 中我们常用 validator 或者 request 这两种方法来进行验证,但是这两种验证都不是很方便进行自定义提示信息,自定义验证规则,所以下面来介绍一种很方便的用法: 新建抽象类 <?php namespace App\Http\Validators; use Validator; abstract class AbstractValidator { /** * Validator * * @var \Illuminate\Valid
-
Laravel Validator 实现两个或多个字段联合索引唯一
Laravel的Validation还是蛮好用的,使用Validator可以非常方便的验证表单,它提供了unique唯一性验证,但是默认只能验证一个字段,那遇到两个甚至多个字段的联合索引,需要满足复杂条件唯一性怎么实现呢 Validator复杂唯一性实现方法 我们可以用自定义 Rule 自定义验证规则,比如像这样: [...] $where = [ 'name' => $request->name, 'phone' => $request->phone ]; $this->v
-
Laravel Validator自定义错误返回提示消息并在前端展示
前言 Laravel Validator 默认返回的是英文的提示消息,而大多数情况我们需要自定义错误返回提示消息,本文将介绍一下如何自定义错误消息,并在前端展示. 自定义错误消息 别怪我太直接,代码奉上 $messages = [ 'phone.unique' => '重复的电话号码', 'required' => '请将信息填写完整', ]; $this->validate($request, [ 'phone' => 'required|unique:table_name',
-
laravel Validator ajax返回错误信息的方法
将return back()->withErrors($validator->errors())->withInput();替换为下面的代码 $validator = \Validator::make($request->input(), $rules, $messages); if ($validator->fails()) { //将返回错误循环组装成字符串 $arr = []; foreach ($validator->getMessageBag()->to
-
laravel解决迁移文件一次删除创建字段报错的问题
需求:通过写迁移文件更新user表中 topic 字段类型,从原来的varchar到json. 因为无法直接修改成json数据类型,只能采用先删除在创建的方式. 迁移文件代码如下: <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUserTable extends Migration{ /** * 运行迁移 * * @return v
-
laravel 表单验证实现多个字段组合后唯一
Laravel 表单验证器的几种使用方法 1.使用控制器的 validate 方法进行参数验证 /** * 保存一篇新的博客文章. * * @param Request $request * @return Response */ public function store(Request $request) { $this->validate($request, [ 'title' => 'required|unique:posts|max:255', 'body' => 'requi
-
Vue 两个字段联合校验之修改密码功能的实现
目录 1.前言 2.方案实现 2.1.实现代码 2.2.代码说明 2.3.校验效果 1.前言 本文是前文<Vue Element-ui表单校验规则,你掌握了哪些?>针对多字段联合校验的典型应用. 在修改密码时,一般需要确认两次密码一致,涉及2个属性字段.类似的涉及2个属性字段的情况有: 日期时间范围,如果两者都有值,则要求:结束时间>=开始时间. 数量关系:数量下限<=数量上限. 特点是两个属性值都是可变的.本文以校验两次密码的一致性应用,给出两个可变属性值的字段之间的
-
thinkphp多表查询两表有重复相同字段的完美解决方法
框架:thinkphp 版本:3.2.3 内容:查询语句 解决问题:重复字段问题 $Data = M('a')->where($where) ->Field('a.name as aname,b.name as uname,a.*') ->join('b on b.jb_id=a.id') ->order('a.id desc') ->select(); 解释:a.* 查询a表所有的字段 a.name as aname 转换a表中的name重复字段为aname 以上就是小编为
-
使用laravel根据用户类型来显示或隐藏字段
在api开发中,有时候需要对自己以外的其他普通用户隐藏字段,比如隐藏手机号.而对于admin用户,则又不需要隐藏手机号. 所以,需要设计一种能够简单的根据不同用户来显示或隐藏字段的方式. 方法基于laravel实现 use Illuminate\Database\Eloquent\Model; class User extends Model { /** * 重写toArray方法 */ public function toArray(){ //获取api用户 $me=app(Request::
-
Laravel Eloquent ORM 实现查询表中指定的字段
在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在ORM查询时只返回数据表中指定字段的数据呢?很多时候,文档上没有写明的用法需要我们去看源码来探究的,下面我们就来看一下这三个方法的实现. 由于ORM依赖了QueryBuilder来实现查询, 在QueryBuilder的源码里通过查看get,first方法的实现可以到,他们都可以接收一个数组参数来指定要查询
-
golang 实现两个结构体复制字段
实际工作中可能会有这样的场景: 两个结构体(可能类型一样), 字段名和类型都一样, 想复制一个结构体的全部或者其中某几个字段的值到另一个(即merge操作), 自然想到可以用反射实现 package main import "fmt" import "reflect" // 用b的所有字段覆盖a的 // 如果fields不为空, 表示用b的特定字段覆盖a的 // a应该为结构体指针 func CopyFields(a interface{}, b interface
随机推荐
- 跟老齐学Python之深入变量和引用对象
- JS判断时间段的实现代码
- iOS10适配(必看)
- 微软官方SqlHelper类 数据库辅助操作类 原创
- 纯JS实现动态时间显示代码
- WPF气泡样式弹窗效果代码分享
- 详解Python发送邮件实例
- 跟老齐学Python之dict()的操作方法
- asp中记录集对象的getrows和getstring用法分析
- SQL Server数据库中批量导入数据的四种方法总结
- Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
- javascript实现上传图片并预览的效果实现代码
- node.js学习之事件模块Events的使用示例
- 解析sql中得到刚刚插入的数据的id
- 基于jQuery的ajax功能实现web service的json转化
- 防止页面url缓存中ajax中post请求的处理方法
- Android控件Chronometer定时器的实现方法
- 关于Spring项目对JDBC的支持与基本使用详解
- 详解Python列表赋值复制深拷贝及5种浅拷贝
- java项目中使用 Lombok遇到的问题小结