【问题标题】:How to add validation on same database field for different names in Laravel?如何在 Laravel 中为不同名称的同一数据库字段添加验证?
【发布时间】:2017-08-01 15:39:39
【问题描述】:

我有一个数据库用户。它有一个电子邮件字段。

我有两个名为 users[email] 和 manager.email 的输入字段。我希望在用户表上验证唯一性。这是我尝试过的。

<div class="row">
    <div class="form-group col-md-12">
        <div class="col-md-8">{{ Form::input('text', 'users[email]', '', ['class' => "form-control", 'maxlength' => 255, 'id' => "userEmail", 'placeholder' => "Email Address"]) }}</div>
     </div>
</div>

<div class="row">
    <div class="form-group col-md-12">
        <div class="col-md-8">{{ Form::input('text', 'manager[email]', '', ['class' => "form-control", 'maxlength' => 255, 'id' => "email", 'placeholder' => "Manager Email Address"]) }}</div>
     </div>
</div>

我的验证器如下:

$validationRules = ['users.email' => 'email|required|unique:users', 
'manager.email' => 'email|required|unique:users', 
];

所以,当我验证器返回一条消息时:

Unknown column 'manager.email' in 'where clause' (SQL: select count(*) as aggregate from `users` where `manager`.`email` = 'xyz@email.com')

请指导我完成这个或建议我一个更好的选择来解决这个问题。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我想您的问题是因为您没有在唯一规则中指定列名。

    https://laravel.com/docs/5.2/validation#rule-unique(查看Specifying A Custom Column Name

    尝试改变:

    'manager.email' => 'email|required|unique:users'
    

    到:

    'manager.email' => 'email|required|unique:users,email'
    

    希望这会有所帮助!

    【讨论】:

    • 没用。
    • 成功了。不过我也试过了,我猜 Laravel 一定是缓存了之前的视图。
    猜你喜欢
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2022-01-09
    • 2015-12-20
    • 2021-10-15
    相关资源
    最近更新 更多