资讯专栏INFORMATION COLUMN

Laravel的unique和exists验证规则的优化

Lin_R / 1277人阅读

摘要:本文是实战任务管理系统一的扩展阅读欢迎作客我们的学习群原文链接交流群中通过这个来验证非常的方便,并且在类中它被自动的引入了。和这两个规则非常的强大和便利。但是从的版本开始这两个验证规则都可以通过一个新的类来简化。

本文是Laravel实战:任务管理系统(一)的扩展阅读; 欢迎作客我们的php&Laravel学习群:109256050

原文链接:http://pilishen.com/posts/Imp...

laravel qq交流群:109256050

Laravel中通过ValidatesRequests这个trait来验证requests非常的方便,并且在BaseController类中它被自动的引入了。
exitsts()和unique()这两个规则非常的强大和便利。它们在使用的过程中需要对数据库中已有的数据进行验证,通常它们会像下面这样来写:

// exists example
"email" => "exists:staff,account_id,1"
// unique example
"email" => "unique:users,email_address,$user->id,id,account_id,1"

上面这种写法的语法很难记,我们几乎每次使用时,都不得不去查询一下文档。但是从 Laravel 的5.3.18版本开始这两个验证规则都可以通过一个新的Rule类来简化。

我们现在可以使用下面这样的熟悉的链式语法来达到相同的效果:

"email" => [
    "required",
    Rule::exists("staff")->where(function ($query) {
        $query->where("account_id", 1);
    }),
],
"email" => [
    "required",
    Rule::unique("users")->ignore($user->id)->where(function ($query) {
        $query->where("account_id", 1);
    })
],

这两个验证规则还都支持下面的链式方法:

where

whereNot

whereNull

whereNotNull

unique验证规则除此之外还支持ignore方法,这样在验证的时候可以忽略特定的数据。

好消息是现在仍然完全支持旧的写法,并且新的写法实际上就是通过formatWheres方法在底层将它转换成了旧的写法:

protected function formatWheres()
{
    return collect($this->wheres)->map(function ($where) {
        return $where["column"].",".$where["value"];
    })->implode(",");
}

原文地址链接

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28187.html

相关文章

  • Laravel 多用户认证系统改造方案

    摘要:本文基于,主要介绍如何针对多站点分别进行用户认证的改造,用意是最大限度利用自带的认证系统。具体方案为清晰起见,项目按照不同站点组织成不同模块。学院版用户认证文档版用户认证文档更详细学院版验证文档版验证文档更详细翁航版多用户认证方案 原文发表于 http://www.jianshu.com/p/d6c112f27661 showImg(https://segmentfault.com/i...

    paulli3 评论0 收藏0
  • Laravel表单验证

    摘要:验证的字段值必须与参数字段的值不同。第一次验证失败后停止运行验证规则。只是停止这个字段的验证,其它字段不影响。两次输入的密码不一致新密码与旧密码不能一致检查经过身份验证的用户确定其是否具有更新给定资源的权限。 修改密码 showImg(https://segmentfault.com/img/bVbaFNP?w=234&h=229); Confirmed 如果要验证的字段是 passw...

    wapeyang 评论0 收藏0
  • Laravel 十八个最佳实践

    摘要:本文翻译改编自的十八个最佳实践这篇文章并不是什么由改编的原则模式等。只是为了让你注意你在现实生活的项目中最常忽略的内容。单一职责原则正在帮助你避免重复。当然,这也包括了模板的范围等。此外,也拥有很棒的内置工具,比如软删除事件范围等。 showImg(https://segmentfault.com/img/remote/1460000015166532); 本文翻译改编自 Larave...

    gitmilk 评论0 收藏0
  • Laravel 5.7 最佳实践开发技巧分享

    摘要:当查询数据时,本地范围允许我们创建自己的查询构造器链式方法。这样便会知道这是一个本地范围并且可以在查询构造器中使用。某些查询构造器不可用或者说可用但是方法名不同,关于这些请查阅所有集合的方法。 showImg(https://segmentfault.com/img/remote/1460000017877956?w=800&h=267); Laravel 因可编写出干净,可用可调试的...

    ninefive 评论0 收藏0
  • Laravel核心解读--用户认证系统实现细节

    摘要:通过装载看守器和用户提供器装载看守器和用户提供器用到的方法比较多,用文字描述不太清楚,我们通过注解这个过程中用到的方法来看具体的实现细节。 用户认证系统的实现细节 上一节我们介绍来Laravel Auth系统的基础知识,说了他的核心组件都有哪些构成,这一节我们会专注Laravel Auth系统的实现细节,主要关注Auth也就是AuthManager是如何装载认证用的看守器(Guard)...

    NicolasHe 评论0 收藏0

发表评论

0条评论

Lin_R

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<