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

验证laravel 5中两个字段的组合,laravel,laravel-5,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:e

我们可以验证两个字段的组合吗?我不希望事件表中有相同的条目 比如说

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'

下面的规则检查给定$categoryName下的唯一事件名称$categoryName可以是乐队、食物、装饰、任何东西

例如,如果事件是“婚礼”,类别是“乐队”,它将不允许您插入,它将抛出已存在的错误。如果事件为“婚礼”,类别为“任何”,则允许您插入

'event' => 'required|unique:events,event,NULL,id,category,'.$categoryName

您可以找到它的文档,您必须在该页面上搜索关键字“Adding Additional Where子句”。

下面的规则检查给定$categoryName下的唯一事件名称$categoryName可以是乐队、食物、装饰、任何东西

例如,如果事件是“婚礼”,类别是“乐队”,它将不允许您插入,它将抛出已存在的错误。如果事件为“婚礼”,类别为“任何”,则允许您插入

'event' => 'required|unique:events,event,NULL,id,category,'.$categoryName

您可以找到它的文档,您必须在该页面上搜索关键字“添加附加Where子句”。

这是一个老问题,但我遇到了相同的问题,所以这里是我的快速解决方法。 在App\Providers\AppServiceProvider的引导方法中,添加以下内容:

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,instance_id'
只需确保在请求时您将有一个name=other\u列的输入


希望这对某人有帮助

这是一个老问题,但我遇到了同样的问题,所以这里是我的快速解决方法。 在App\Providers\AppServiceProvider的引导方法中,添加以下内容:

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,instance_id'
只需确保在请求时您将有一个name=other\u列的输入


希望这对某人有帮助

“你查过我的答案了吗,@Komal?还没有,我会查一下让你知道.”。。谢谢@shaunakshukla你查过我的答案了吗@Komal?还没有,我会查一下让你知道。。谢谢@ShaunakShukla