动态下拉值 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>
我正在开发一个 Laravel 应用程序来做一些简单的数据输入。
课程类别是具有单个文本输入字段的 CRUD。
授予机构 CRUD 由几个字段以及从数据库中填充的课程类别字段组成。
创建、读取和删除效果很好。
但是当我edit/update Awarding Body 中的数据时,出现以下错误:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'coursecategory' cannot be null (SQL: update
awarding_bodies
setdescription
= Nebosh gdgd,coursecategory
= ?,validtill
= 2021-09-14,awarding_bodies
.updated_at
= 2021-09-07 12:56:30 whereid
= 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>