【问题标题】:Laravel validation: unique, when name is equal, but other field is differentLaravel 验证:唯一,当名称相同,但其他字段不同时
【发布时间】:2016-03-11 07:30:36
【问题描述】:

标签可以具有相同的名称,当它们的值modul_id 不同时。 目前我使用这段代码:

$tag = Tag::firstOrNew([
    'name' => $request->get('name'),
    'modul_id' => Modul::where('short', $modul_short)->first()->id
]);

if(!$tag->id) {
  $tag->save(); //this is a new entry

} else {
  //record was allready there
}

是否可以为“您可以具有相同的名称,但您需要不同的 modul_id”制定验证规则?

【问题讨论】:

    标签: validation laravel unique laravel-5.1


    【解决方案1】:

    你可以使用 Laravel Validator 和唯一的验证规则:

     $module_id = $request->get('module_id');
     $rules = [
         'name' => 'unique:tags,name,NULL,id,modul_id,'.$module_id
     ]
    

    这假设 module_id 是随请求一起提供的(或者在验证之前以其他方式获取。

    该示例意味着,对“name”列上的“tags”表执行唯一检查,但该检查仅在与给定 $module_id 匹配的行上运行。

    有关更多信息,您可以查看Laravel Docs - Unique Validation rule

    【讨论】:

    • 工作了,但是有没有办法把它放到请求类中?
    • 您的意思是在表单请求验证中?
    • 是的,我更愿意将验证和控制器分开。
    • 这也应该适用。你哪里有问题?
    • 从url获取值$module_id
    猜你喜欢
    • 2017-03-26
    • 2022-01-09
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多