我有一个提供 CRUD API 的 Laravel 应用程序。有一个包含主键的表,我在模型和迁移文件中介绍了键:
protected $primaryKey = ['personel_id', 'valid_for_quarter'];
我也这样定义了它的路线:
Route::middleware('auth:api')->group( function () {
Route::apiResources([
'peopleDatas' => 'API\PeopleDataController'
]);
});
以及包含show如下方法的控制器类:
public function show(PeopleData $peopleData)
{
dd($peopleData);
}
现在的问题是:
1、当对象有多个主键的情况下,访问show方法的url是什么?请注意,我没有自己明确定义路由 url,我想使用Route::apiResources方法。可能吗?
这是路线列表:
| | GET|HEAD | api/peopleDatas | peopleDatas.index | App\Http\Controllers\API\PeopleDataController@index | api,auth:api |
| | POST | api/peopleDatas | peopleDatas.store | App\Http\Controllers\API\PeopleDataController@store | api,auth:api |
| | GET|HEAD | api/peopleDatas/{peopleData} | peopleDatas.show | App\Http\Controllers\API\PeopleDataController@show | api,auth:api |
| | DELETE | api/peopleDatas/{peopleData} | peopleDatas.destroy | App\Http\Controllers\API\PeopleDataController@destroy | api,auth:api |
| | PUT|PATCH | api/peopleDatas/{peopleData} | peopleDatas.update | App\Http\Controllers\API\PeopleDataController@update | api,auth:api |
另一方面,在这种情况下我应该明确定义网址吗?例如/api/peopleDatas/{key1}/{key2},或者有任何适用于 Laravel 的标准方法吗?
2.如果对象有多个主键Eloquent,Laravel 路由模型绑定是否可以处理它并从数据库中获取项目,或者我需要从用户那里获取 id 并将find函数应用于我的模型?
3.如果 Laravel 默认不处理它,是否可以重写一些函数来告诉 Laravel 如何从数据库中获取项目以防万一Route Model Binding?
噜噜哒