【问题标题】:Laravel rule for unique excluding blank or nullLaravel 的唯一规则,不包括空白或空值
【发布时间】:2015-08-27 19:36:19
【问题描述】:

我有一个用户模型,它需要有唯一的电子邮件地址,但我也想让它们留空以防用户没有电子邮件...我在docs 看到有一种方法来制定规则对于唯一和一个id的例外......但我不知道如何让它允许null或空白,但如果它不是唯一的。抱歉,这似乎很简单,但我想不出答案。

public static $adminrules = 
    'email' => 'email|unique:users,email,null,id,email,NOT_EMPTY'                             
);   

编辑 使用没有required 的规则可能就足够了,因为在这些情况下,空白或空值会通过验证。我可能有一个相关的错误,所以我不能添加超过 1 封空白电子邮件,所以我无法验证这一点。

public static $adminrules = 
    'email' => 'email|unique:users'                             
); 

【问题讨论】:

  • 这就是“有时”规则有用的地方吗?

标签: php laravel laravel-validation


【解决方案1】:

你应该试试这个:

$v->sometimes('email', 'email|unique:users,email', function($input)
{
    return !empty($input->email);
});

$v 是您的验证器对象,您基本上说如果电子邮件字段不为空,它也应该是唯一的(电子邮件列中不应存在具有此值的用户表记录)。

【讨论】:

    【解决方案2】:

    在您的 Requests/UserRequest 中,您会有类似的东西

    public function rules()
    {
        return [
            'email' => [
                'nullable',Rule::unique((new User)->getTable())->ignore($this->route()->user->id ?? null)
             ]
        ];
    }
    

    nullable 的使用允许该字段为空。另一部分是检查电子邮件在User 模型表中是否唯一。

    如果您想验证字段是否唯一

    • 两个字段之间请refer to this answer

    • 在另一个表中,然后将以下内容添加到您的规则中

    'exists:'.(new ModelName)->getTable().',id'
    

    【讨论】:

      【解决方案3】:

      我试过这个。在“有时”之前添加“可为空”。

       $validator = Validator::make($request->all(), [
              'email' => 'nullable|sometimes|unique:users',
          ]);
      

      【讨论】:

        【解决方案4】:

        你应该尝试改变你的数据库结构,使字段 email 可以为空。在规则中试试这个:

        $this->validate($request,
          [
            'email' => 'email',
          ]
        );
        
        if(isset($request->address))
        {
           $this->validate($request,
             [
               'email' => 'email|unique:users'
             ]
           );
        }
        

        【讨论】:

          猜你喜欢
          • 2019-09-21
          • 1970-01-01
          • 1970-01-01
          • 2021-12-27
          • 2016-02-20
          • 2017-11-30
          • 2017-08-12
          • 2015-06-05
          • 2010-11-28
          相关资源
          最近更新 更多