Laravel Nova在Update的多个字段上验证唯一性

时间:2019-12-03 10:26:25

标签: laravel laravel-nova

我的表 EventRegistration 中包含'id','user_id','event_id'。 用户可以注册多个事件,但不能注册TWICE。 一个活动可以由多个用户参加

我需要'user_id''event_id'

的唯一性组合
 BelongsTo::make( __('User'),'user')
             ->searchable()
             ->rules('required')
             ->creationRules(Rule::unique('event_registration','user_id')
                               ->where(function($query) use ($event_id){
                                  return $query->where('event_id',$event_id);
                               }))
             ->updateRules(Rule::unique('event_registration','user_id')
                               ->where(function($query) use ($event_id){
                                  return $query
                                        ->where('event_id',$event_id);

                               })
                               ->ignore($this->id),
                               // ->ignore('{{resourceId}}') // Does not work as well
    ),

创建规则效果很好。更新规则显示错误(资源ID为5389)

  

方法Illuminate \ Validation \ Validator :: validate5389不存在。

我猜想Laravel正在尝试转换ID以进行验证,但是无法调用该方法。我想念什么?

1 个答案:

答案 0 :(得分:0)

尝试一下:

BelongsTo::make(__('User'), 'user')
    ->searchable()
    ->creationRules([
        'required',
        Rule::unique('event_registration', 'user_id')
            ->where(function ($query) use ($event_id) {
                return $query->where('event_id', $event_id);
            })
    ])
    ->updateRules([
        'required',
        Rule::unique('event_registration', 'user_id')
            ->where(function ($query) use ($event_id) {
                return $query->where('event_id', $event_id);
            })
            ->ignore($request->resourceId)
    ]),
相关问题