【发布时间】:2020-06-17 00:43:57
【问题描述】:
我有一张旅行桌和一张打包桌。我创建了两个表之间的关系。
用户可以为他们的旅行创建一个装箱单,添加项目并将它们标记为已完成。
“打包”表的外键是trip_id。 但是,当用户将项目添加到装箱单时,会出现错误 SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value:
似乎trip_id 字段正在添加trips 表中的每个字段。 我只想在下面的示例中添加旅行 ID '17'...
路线
Route::get('/packingList/{id}', 'TaskController@index');
Route::post('/packingList/store', 'TaskController@store')->name('tasks.store');
Route::post('/packingList/update/{id}', 'TaskController@update')->name('tasks.update');
Route::delete('/packingList/{id}', 'TaskController@destroy')->name('tasks.destroy');
packingList.blade.php
<div class="card-body">
<form method="POST" action="{{route('tasks.store')}}">
@csrf
<input value="{{ $trip_id }}" name="trip_id" hidden="true"/>
<div class="form-group">
<label for "title">Title</label>
<input id="title" name="title" type="text" maxlength="225" class="form-control" autocomplete="off" />
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
</div>
<div class="card-header">Items to Pack</div>
<div class="card-body">
<table class="table table-striped">
@foreach ($packings as $packing)
<tr>
<td>
@if($packing->is_complete)
<s> {{$packing->title}} </s>
@else
{{$packing->title}}
@endif
</td>
<td class="text-right">
@if(! $packing->is_complete)
<form method="POST" action="{{route('tasks.update', $packing->id)}}">
@csrf
<button type="submit" class="btn btn-primary">Complete</button>
</form>
@endif
<form action="{{route('tasks.destroy',[$packing->id])}}" method="POST">
@method('DELETE')
@csrf
<button class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
</div>
控制器
public function index($id) {
$trip_id = Trip::findOrFail($id);
$packings = Packing::get();
return view('packingList')->with('packings', $packings)->with('trip_id', $trip_id);
}
public function store(Request $request) {
//validate given Request
$this->validate($request, [
'title' => 'required|string|max:225',
'trip_id' => 'required'
]);
//create a new incompletete item with given title
$packings = new Packing;
$packings->title = $request->input('title');
$packings->is_complete = false;
$packings->trip_id = $request['trip_id'];
$packings->save();
return redirect('packingList')->with('success', 'Item added to Packing List');
}
public function update(Request $request, $id) {
//mark task as complete and save it
$packings = Packing::find($id);
$packings->is_complete = true;
$packings->save();
return redirect('packingList')->with('success', 'Item Updated');
}
public function destroy($id)
{
$packings = Packing::find($id);
$packings->delete();
return redirect('trips')->with('success', 'Item Deleted from Packing List');
}
模型
public function trip()
{
return $this->belongsTo('App\Trip', 'trip_id');
}
public function packings() {
return $this->hasMany('App\Packing');
}
【问题讨论】:
标签: php laravel foreign-keys