내가 VehicleController
에서이 기능을 사용하여 내 데이터베이스에서 행을 갱신하는 데 노력하고 있어요,하지만 난 입력 필드에 미리 입력 데이터 수 :Laravel 행 업데이트 요청 방법
public function editVehicle(Request $request, Vehicle $vehicle, Customer $customer)
{
if ($request->isMethod('post')) {
$this->validate($request, [
'plate' => 'required', //plate is primary key <VARCHAR>
'cust_id' => 'required', //cust_id is foreign key <INTEGER>
'type' => 'required',
'brand' => 'required',
'year' => 'required',
'mileage' => 'required'
]);
$this->vehiclesService->editVehicle($request, $vehicle);
return redirect()->route('Customers:detail', ['customer' => $customer]);
}
return view('vehicles.form', ['vehicle' => $vehicle]);
}
가 그럼이 기능 VehiclesService
모델이 없다 :
public function editVehicle($request, $vehicle)
{
DB::transaction(function() use ($request, $vehicle) {
$vehicle->cust_id = $request->cust_id;
$vehicle->type = $request->type;
$vehicle->brand = $request->brand;
$vehicle->year = $request->year;
$vehicle->mileage = $request->mileage;
$vehicle->plate= $request->plate;
DB::update('update vehicles set cust_id=?, type=?, brand=?, year=?, mileage=? where plate=?',
[$vehicle->cust_id, $vehicle->type, $vehicle->brand, $vehicle->year, $vehicle->mileage, $vehicle->plate]);
Log::info('Vehicle updated.');
flash('Vehicle successfully updated', 'success');
});
}
그리고 (예를 들어 하나 개의 입력 필드) 차량을 편집 내 양식은 다음과 같습니다
<label>Plate number</label>
<input type="text" value="@if(isset($vehicle)){{$vehicle->plate}} @endif" name="plate" id="plate" class="form-control" placeholder="Enter plate number, eg. 'PP123KL'">
,
차량을 만드는 기능이 잘 작동합니다. 차량을 만들 때 id
(표 customers
)을 cust_id
(표 vehicles
)에 할당하여 차량이 지정된 고객에게 속한 차량을 사용하고 있습니다. 이렇게하면 cust_id
은 외래 키입니다.
외래 키가 없으며 개인 키가 id
이고 유형이 serial integer
인 고객 (편집 고객)과 비슷한 기능을 가지고 있으며이 기능은 완벽하게 작동합니다. 하지만 차량에서 plate
을 입력하고 varchar
을 개인 키로 입력하면 id
이 아니기 때문에 Postgresql에 문제가있을 수 있다고 생각합니다.이 함수는 작동하지 않습니다. 양식이 미리 채워지지 않았으며 일부 입력 데이터를 입력 필드에 입력하려고해도 데이터가 저장되지 않습니다. 차량이 전혀 편집되지 않았습니다.
어느쪽으로 든, 나는 그것을 고치려고 노력하고, 주어진 차량을 위해 데이터베이스에서 데이터로 미리 채워지는 나의 편집 형태를 얻는다. 그러나 전혀 운이 없다.
UPDATE :
경로 :
Route::group(['prefix' => '/vehicles'], function() {
Route::match(['get'], '/{plate}/edit', 'Vehicles\[email protected]')->name('Vehicles:edit');
Route::match(['post'], '/{plate}/editVehicle', 'Vehicles\[email protected]')->name('Vehicles:editVehicle');
}};
VehicleController :
public function edit(Request $request, $id) {
$vehicle = Vehicle::with(['customer'])->find($id);
return view('edit', compact('vehicle'));
}
public function editVehicle(Request $request, Vehicle $vehicle)
{
if ($request->isMethod('post')) {
$this->validate($request, [
'plate' => 'required',
'cust_id' => 'required',
'type' => 'required',
'brand' => 'required',
'year' => 'required',
'mileage' => 'required'
]);
$this->vehiclesService->editVehicle($request, $vehicle);
return redirect()->route('Customers:detail', ['customer' => $vehicle->customer]);
}
return view('vehicles.form', ['vehicle' => $vehicle]);
}
'http : // localhost : 8000/vehicles/KK134IL/editVehicle'을 사용하고 있습니다. 여기서'KK134IL'은 플레이트 번호입니다 – Ady96
제공 한 코드로 제 질문을 업데이트했지만'Undefined column : 7 오류 : 열차 차량 .id가 존재하지 않습니다. LINE 1 : "차량", "차량", "id"= $ 1 제한 1 '을 선택하십시오. 그것은 고객'id'입니까? – Ady96