2015-12-06 66 views
2

标签可以具有相同的名称,当它们的值为modul_id时是不同的。 目前我使用这段代码:Laravel验证:唯一,当名称相同时,但其他字段不同

$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”?

回答

1

你可以使用Laravel Validator和独特的验证规则:

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

这是假设,即是模块具备请求(或取莫名其妙否则验证之前

的例子意味着,对“名称”列上的表'标记'执行唯一检查,但此检查仅在与给定$ module_id匹配的行上运行。

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

+0

工作,但有什么办法把它放到请求类? – mimo

+0

你的意思是在一个表单请求验证? –

+0

是的,我宁愿将serverarate验证和控制器。 – mimo

相关问题