动态下拉值 Laravel 8

Dynamic dropdown value Laravel 8

我正在开发一个 Laravel 应用程序来做一些简单的数据输入。

课程类别是具有单个文本输入字段的 CRUD。

授予机构 CRUD 由几个字段以及从数据库中填充的课程类别字段组成。

创建、读取和删除效果很好。

但是当我edit/update Awarding Body 中的数据时,出现以下错误:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'coursecategory' cannot be null (SQL: update awarding_bodies set description = Nebosh gdgd, coursecategory = ?, validtill = 2021-09-14, awarding_bodies.updated_at = 2021-09-07 12:56:30 where id = 1)

谁能帮我理解我做错了什么?
PS。我是 Laravel 和 MVC 框架的新手。

提前致谢。

编辑方法&更新方法

public function AwardingBodyEdit($id) {
    $editData = AwardingBody::find($id);
    $coursecategories = CourseCatergory::all();
    return view('backend.setup.awarding_body.edit_awardingbody', compact('editData', 'coursecategories'));

}

public function AwardingBodyUpdate(Request $request, $id) {

    $data = AwardingBody::find($id);

    $data->name = $request->name;
    $data->description = $request->description;
    $data->coursecategory = $request->coursecategory;
    $data->issuedate = $request->issuedate;
    $data->validtill = $request->validtill;
    $data->molapprovaldate = $request->molapprovaldate;
    $data->molvalidtilldate = $request->molvalidtilldate;
    $data->save();

    $notification = array (
        'message' => 'Awarding Body updated successfully',
        'alert-type' => 'success'
    );

    return redirect()->route('awarding.body.view')->with($notification);
}

我的表格

<form method="post" action="{{ route('awarding.body.update', $editData->id) }}">
        @csrf
    <div class="row">
    <div class="col-12">            
        
    <div class="row"> <!-- start row -->
    <div class="col-md-6"> <!-- start col 6 -->
        <div class="form-group">
                <h5>Awarding Body Name<span class="text-danger">*</span></h5>
                <div class="controls">
                    <input type="text" name="name" value="{{ $editData->name }}" class="form-control" required data-validation-required-message="This field is required">
                </div>
                    @error('name')
                    <span class="text-info">{{ $message }}</span>
                    @enderror
        </div>
    </div><!-- start col 6 -->

    <div class="col-md-6"> <!-- start col 6 -->
    <div class="form-group">
                <h5>Description <span class="text-danger">*</span></h5>
                <div class="controls">
                <textarea rows="5" cols="5" name="description" class="form-control" >{{ $editData->description }}</textarea>
                </div>
                    @error('name')
                    <span class="text-info">{{ $message }}</span>
                    @enderror
    </div>
    </div><!-- end col 6 -->
    </div><!-- end row -->

    <div class="row"> <!-- start row -->
    <div class="col-md-6"> <!-- start col 6 -->
    <div class="form-group">
                <h5>Course Category <span class="text-danger">*</span></h5>
                <select name="coursecategory" class="form-control select2" style="width: 100%;">
                <option value="">{{ $editData->coursecategory }}</option>
                    @foreach($coursecategories as $coursecategory)
                    <option>{{$coursecategory->name}}</option>
                    @endforeach
                </select>
</select>
     </div>

    </div><!-- start col 6 -->

    <div class="col-md-6"> <!-- start col 6 -->
        
    </div><!-- end col 6 -->
    </div><!-- end row -->

    <div class="row"> <!-- start row -->
    <div class="col-md-6"> <!-- start col 6 -->
    <div class="form-group">
                <h5>Issue Date <span class="text-danger">*</span></h5>
                <div class="controls">
                    <input type="date" value="{{ $editData->issuedate }}" name="issuedate"  class="form-control" required data-validation-required-message="This field is required">
                </div>
                    @error('name')
                    <span class="text-info">{{ $message }}</span>
                    @enderror
        </div>
    </div><!-- start col 6 -->

    <div class="col-md-6"> <!-- start col 6 -->
        <div class="form-group">
                <h5>Valid Till <span class="text-danger">*</span></h5>
                <div class="controls">
                    <input type="date" value="{{ $editData->validtill }}" name="validtill"  class="form-control" >
                </div>
                    @error('name')
                    <span class="text-info">{{ $message }}</span>
                    @enderror
        </div>
    </div><!-- end col 6 -->
    </div><!-- end row -->


    <div class="row"> <!-- start row -->
    <div class="col-md-6"> <!-- start col 6 -->
        <div class="form-group">
                <h5>MOL Approval Issue Date <span class="text-danger">*</span></h5>
                <div class="controls">
                    <input type="date" value="{{ $editData->molapprovaldate }}" name="molapprovaldate"  class="form-control" >
                </div>
                    @error('name')
                    <span class="text-info">{{ $message }}</span>
                    @enderror
        </div>
    </div><!-- start col 6 -->

    <div class="col-md-6"> <!-- start col 6 -->
        <div class="form-group">
                <h5>MOL Approval Valid Till <span class="text-danger">*</span></h5>
                <div class="controls">
                    <input type="date" value="{{ $editData->molvalidtilldate }}" name="molvalidtilldate"  class="form-control" >
                </div>
                    @error('name')
                    <span class="text-info">{{ $message }}</span>
                    @enderror
        </div>
    </div><!-- end col 6 -->
    </div><!-- end row -->



    <div class="text-xs-right">
        <input type="submit" class="btn btn-info btn-rounded mb-5" value="Update">
    </div>
    </form>

路线:

// Setup -> Awarding Body
Route::prefix('setup')->group(function(){
    Route::get('awarding_body/view', [AwardingBodyController::class, 'AwardingBodyView'])-> name('awarding.body.view'); 
    Route::get('awarding_body/add', [AwardingBodyController::class, 'AwardingBodyAdd'])-> name('awarding.body.add'); 
    Route::post('awarding_body/store', [AwardingBodyController::class, 'AwardingBodyStore'])-> name('awarding.body.store'); 
    Route::get('awarding_body/edit/{id}', [AwardingBodyController::class, 'AwardingBodyEdit'])-> name('awarding.body.edit'); 
    Route::post('awarding_body/update/{id}', [AwardingBodyController::class, 'AwardingBodyUpdate'])-> name('awarding.body.update'); 
    Route::get('awarding_body/delete/{id}', [AwardingBodyController::class, 'AwardingBodyDelete'])-> name('awarding.body.delete'); 
});

正如@jade 所指出的,我正在填充没有值的下拉列表。

            <option value="{{ $editData->coursecategory }}">{{ $editData->coursecategory }}</option>