routes\api 中的參數要與 controller 中的參數一致,這樣子 Laravel 會自動將傳入的 id 參數,進行型別轉換,這樣就可以得到該筆資料,不需要自行撰寫程式取得。
routes\api 中的參數
首先在 api 中,建立一筆 Route::put ,這裡要注意 {company} 要與 Controller 函數中的參數一致。

PHP
Route::controller(CompanyController::class)->group( function() {
// 使用 Resource 的 CRUD 內定函數
Route::resource('auth/organize/companies', CompanyController::class);
Route::get('auth/organize/user/companies', 'getUserCompanies');
Route::put('auth/organize/user/companies/{company}', 'putUserCompany');
})Controller 中的傳入的參數
在函數中,參數 $company 要與 api 的參數一致,這時當傳入該筆 id 值時,系統會自動取得該筆資料,並以 Model: Company 的型別呈現。
Request $request 則是前端傳入需要更新的資料。
這裡的參數並沒有順序,可以寫成 putUserCompany(Company $company, Request $request)

PHP
public function putUserCompany(Company $company, Request $request)
{
$input = $request->all();
$formData = $request->form_data;
$id = $formData['id'];
// 檢驗表單欄位
$validator = Validator::make($formData, [
'id' => 'required',
'user_id' => 'required',
'code' => 'required',
'name' => 'required',
]);
if ($validator->fails()) {
return $this->sendError('Validation Error.', $validator->errors());
}
//$userCompany = Company::where('id',$id )->get(); // 此行可省略
$company->update($formData);
return $company;
}Postman 測試
在 postman 測試時,上方 PUT 網址最後的 1 ,即是 api 檔案中 Route::put 裡的 {company} 參數,下方 row 的 json 資料,則是傳送的 Request。

JSON
{
"form_data":{
"id":1,
"user_id":1,
"code": "87654321",
"name": "超級管理者的範例公司",
"tel": "0487654321"
}
}



