我想知道使用laravel的路由模型绑定是否可以返回关系数据?
假设我有一个用户模型,并且有一个'friends'与其他用户相关联的关系,我想从路由或控制器返回用户信息和关系。
例如,对于路由
假设我有一个用户模型,并且有一个'friends'与其他用户相关联的关系,我想从路由或控制器返回用户信息和关系。
例如,对于路由
domain.tld/user/123
。Route::model('user', 'User');
Route::get('/user/{user}', function(User $user) {
return Response::json($user);
});
这将返回用户信息,但我也想获取关系,有没有简单/适当的方式可以实现这一点?
我知道我可以这样做
Route::get('/user/{user}', function((User $user) {
return Response::json(User::find($user['id'])->with('friends')->get());
});
或Route::get('/user/{id}', function(($id) {
return Response::json(User::find($id)->with('friends')->get());
});
不过我怀疑可能有更好的方法。
with
一样使用load
,例如作为更复杂查询的一部分,如:return $module->load(['questions', 'questions.results' => function($q) use($user){ return $q->where('user_id', $user->id); }]);
- Djaveload()
方法用于在查询完成后加载关联数据,而with()
方法则是将关联数据作为查询的一部分包含进来。 - Martin Bean