在laravel 5中验证两个字段的组合

时间:2017-08-05 05:44:32

标签: laravel laravel-5

我们可以验证两个字段的组合,我不希望在事件表中使用相同的条目 例如

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'

2 个答案:

答案 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"

希望有人帮助。 :)