我使用以下命令为 Restful API 创建了一个控制器:
php artisan make:controller API\PeopleDataController --api -m PeopleData
它使我成为具有以下方法的控制器:
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\PeopleData $peopleData
* @return \Illuminate\Http\Response
*/
public function update(Request $request, PeopleData $peopleData)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\PeopleData $peopleData
* @return \Illuminate\Http\Response
*/
public function destroy(PeopleData $peopleData)
{
//
}
请注意函数的参数。我定义的路线也是这样的:
Route::middleware('auth:api')->group( function () {
Route::resource('peopleDatas', 'API\PeopleDataController');
});
但是当我使用这样的 URL 发出 PUT 或 DELETE 请求时:
/api/peopleDatas/1234
我收到的update函数destroy不是 id 为 1234 的对象,而是 id 本身。另一方面,使用 artisan 创建的函数的签名必须是这样的:
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
现在的问题是:如何从数据库中获取获取的对象而不是 id。显然,从 int 到模型对象的类型转换是不可能的,我们需要先从 DB 中获取它:
$peopleData = PeopleData::find($id);
似乎我错过了一些Laravel不会自动获取对象并将 id 传递给我的函数的东西。我该如何解决?
明月笑刀无情
缥缈止盈
拉丁的传说