У меня есть столик для поездок и упаковочный столик. Я создал отношения между двумя таблицами.
Пользователи могут создавать упаковочные листы для своих поездок, добавлять предметы и отмечать их галочками по завершении.
Внешний ключ для таблицы «Упаковка» - это trip_id. Однако, когда пользователь добавляет элемент в список упаковки, появляется сообщение об ошибке SQLSTATE [22007]: недопустимый формат даты и времени: 1366 Неверное целочисленное значение:
Похоже, что поле trip_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');
упаковкаList.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');
}