我们可以验证两个字段的组合,我不希望在事件表中使用相同的条目 例如
no | event | category
----------------------
1 | Wedding | Band
2 | Wedding | Food
3 | Wedding | Decor
4 | Wedding | Band // laravel validation to avoid this
喜欢独特的活动
'event' => 'required|unique:events'
像这样的
'event' => 'required|unique:events|category:unique'
答案 0 :(得分:2)
以下规则检查给定$categoryName
下的唯一身份名称。 $categoryName
可以是Band,Food,Decore,any!
例如,如果活动是'婚礼'和类别是' Band',它不会让你插入,它会抛出已经存在的错误。如果活动是“婚礼”#39;和类别是'任何',它会让你插入。
'event' => 'required|unique:events,event,NULL,id,category,'.$categoryName
您可以找到它的文档here,您必须搜索关键字'添加其他Where子句'在那个页面上。
答案 1 :(得分:0)
这是一个老问题,但我遇到了同样的问题,所以这里是我的快速修复。
在App\Providers\AppServiceProvider
上,在boot()方法内,添加:
Validator::extend('uniqueCombo', function ($attribute, $value, $parameters, $validator) {
$query = DB::table($parameters[0])
->where($attribute, '=', $value)
->where($parameters[1], '=', request($parameters[1]));
if (isset($parameters[2])) {
$query = $query->where('id', '<>', $parameters[2]);
}
return ($query->count() <= 0);
});
像这样使用它来创建:
'column' => 'uniqueCombo:table,other_column'
就像这样更新:
'column' => 'uniqueCombo:table,other_column,instance_id'
请确保根据请求您输入name="other_column"
。
希望有人帮助。 :)