Laravel验证:唯一,当名称相等时,但其他字段不同

时间:2015-12-06 18:24:49

标签: validation laravel unique laravel-5.1

标签可以具有相同的名称,当它们的值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
}

是否可以为&#34制作验证规则;您可以使用相同的名称,但是您需要一个不同的modul_id" ?

1 个答案:

答案 0 :(得分: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