Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

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

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');
})在函數中,參數 $company 要與 api 的參數一致,這時當傳入該筆 id 值時,系統會自動取得該筆資料,並以 Model: Company 的型別呈現。
Request $request 則是前端傳入需要更新的資料。
這裡的參數並沒有順序,可以寫成 putUserCompany(Company $company, Request $request)

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 測試時,上方 PUT 網址最後的 1 ,即是 api 檔案中 Route::put 裡的 {company} 參數,下方 row 的 json 資料,則是傳送的 Request。

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