Laravel更新期间发生错误-未定义的变量:id

问题描述 投票:0回答:1

我正在使用Laravel-5.8开发一个项目

protected $table = 'ratings';
protected $fillable = [
              'rating_type',
              'rating_value',
              'rating_description',
          ];

public function rules()
{

    return [
     'rating_type' => 'required|numeric|min:1|max:10|unique:appraisal_ratings,rating_type,company_id'.$this->id,

    ];
}

该评级具有一个id列,这是主键。为什么我针对company_id进行检查,是因为不同的公司可以具有相同的评级类型。

控制器

public function edit($id)
{
    $rating = Rating::where('id', $id)->first();       
    return view('ratings.edit')
            ->with('rating', $rating)
            ->with('rating_types', $this->rating_types)
            ->with('rating_descriptions', $this->rating_descriptions)
            ->with('rating_values', $this->rating_values);
}

public function update(UpdateRatingRequest $request, $id)
{

    $rating = Rating::find($id);                            
    $rating->rating_type       = $request->rating_type;
    $rating->rating_value     = $request->rating_value;
    $rating->rating_description  = $request->rating_description;
    $rating->save();
    Session::flash('success', 'Rating is updated successfully');
    return redirect()->route('ratings.index');
}

edit.blade

    <form  action="{{route('ratings.update', ['id'=>$rating->id])}}" method="post" class="form-horizontal" enctype="multipart/form-data">
        {{ csrf_field() }}
      <input name="_method" type="hidden" value="PUT">
     <div class="card-body">
       <div class="form-body">
         <div class="row">
           <div class="col-12 col-sm-4">
              <div class="form-group">
                <label class="control-label"> Rating:<span style="color:red;">*</span></label>
                  <select class="form-control select2bs4" data-placeholder="Choose Rating" tabindex="1" name="rating_type" style="width: 100%;">
                    <option value="">Select Rating</option>
                        @foreach($rating_types as $k => $rating_type)
                            <option value="{{$k}}" @if($rating->rating_type == $k) selected @endif>{{$rating_type}}</option>
                        @endforeach
                  </select>
                </div>
              </div>
                                
              <div class="col-12 col-sm-4">
                <div class="form-group">
                  <label class="control-label"> Description:<span style="color:red;">*</span></label>
                  <select class="form-control select2bs4" data-placeholder="Choose Description" tabindex="1" name="rating_description" style="width: 100%;">
                    <option value="">Select Description</option>
                        @foreach($rating_descriptions as $k => $rating_description)
                            <option value="{{$k}}" @if($rating->rating_description == $k) selected @endif>{{$rating_description}}</option>
                        @endforeach
                  </select>
                </div>
              </div>
                                
              <div class="col-12 col-sm-4">
                <div class="form-group">
                  <label class="control-label"> Rating Score:<span style="color:red;">*</span></label>
                  <select class="form-control select2bs4" data-placeholder="Choose Rating Score" tabindex="1" name="rating_value" style="width: 100%;">
                    <option value="">Select Rating Score</option>
                        @foreach($rating_values as $k => $rating_value)
                         <option value="{{$k}}" @if($rating->rating_value == $k) selected @endif>{{$rating_value}}</option>
                        @endforeach
                  </select>
                </div>
            </div>

           </div>
         </div>
        </div>          
        <!-- /.card-body -->
        <div class="card-footer">
            <button type="submit" class="btn btn-primary">{{ trans('global.save') }}</button>
            <button type="button" onclick="window.location.href='{{route('ratings.index')}}'" class="btn btn-default">Cancel</button>
        </div>           
           
      </form>

当我单击保存按钮进行更新时,出现此错误:

rating_type已经存在。

自从我进行更新以来,就不会发生该错误。

我该如何解决?

谢谢。

laravel
1个回答
0
投票

对于UpdateRatingRequest,您应该删除unique:rating_type,因为更新的表单会发送重复的存在的rating_type值

© www.soinside.com 2019 - 2024. All rights reserved.