该应用程序将具有独立的sqlite数据库,当网络可用时,它将同步客户端旅程与中央服务器.因此,应用程序中的PK不能用于访问中央服务器上的记录.每个用户都有一个唯一的用户名,该用户名将存储在具有以下列的表中的中央服务器上:
- user_id
- username
然后,旅程表将包含以下列:
- journey_id
- user_id
- user_journey_id
其中user_journey_id将是客户端设备上旅程记录的PK.
这个想法是客户可以通过以下方式访问api:
http://example.com/api/client/UNIQUE_USERNAME/journey/1234
从中央服务器检索旅程.
我有以下资源设置:
Route::resource('client','ClientController'); Route::resource('client.journey','JourneyController');
并为客户端成功设置了路由模型绑定,如下所示:
$router->bind('client',function($value,$route) { return \App\Client::where('username','=',$value)->firstOrFail(); });
我在设置嵌套模型绑定时遇到了一些麻烦,因为我需要将客户端用户名与user_journey_id结合使用来检索正确的旅程.有没有办法用路由模型绑定来做到这一点?
或者这应该在控制器中完成,例如:
public function show(Client $client,$user_journey_id) { ... // have logic here to get the journey.
这就是我目前的做法,但路线模型绑定肯定会使它更容易一些.