我理解Laravel你可以使用Route::resource
路由方法处理/user/1
(https://laravel.com/docs/5.0/controllers#restful-resource-controllers)
我想知道的是如何创造最好的方式来链接"方法,所以我不重复代码。
例如说我有/team/1/user/1
,我可以路由一个TeamUsers
控制器,该控制器从" show"中的数据库中抓取团队和用户。方法
现在,如果我想创建一个/team/1/group/1
路由到TeamGroups
控制器,我会有重复的代码从数据库中再次获取团队。
什么是向后链接并且只在一个点上编写检索团队代码的最佳方式?
干杯
答案 0 :(得分:1)
Laravel实际上有一个route model binding的概念,它会为你解决这个问题。因此,您的代码最终会看起来像:
Route::get('team/{team}/user/{user}', function (App\Team $team, App\User $user) {
$team_name = $team->name;
$user_name = $user->name;
});
然后对于小组来说也一样:
Route::get('team/{team}/group/{group}', function (App\Team $team, App\Group $group) {
$team_name = $team->name;
$group_name = $group->name;
});
答案 1 :(得分:0)
例如,您可以编写Repository类来获取所有数据 https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/
答案 2 :(得分:0)
您可以使用嵌套资源https://laravel.com/docs/5.1/controllers#restful-nested-resources
嵌套资源 有时,您可能需要定义到“嵌套”资源的路由。例如,照片资源可以具有可以附加到照片的多个“注释”。要“嵌套”资源控制器,请在路由声明中使用“点”表示法:
Route::resource('photos.comments', 'PhotoCommentController');
此路由将注册一个“嵌套”资源,可以使用如下网址访问这些资源:photos/{photos}/comments/{comments}
。
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class PhotoCommentController extends Controller
{
/**
* Show the specified photo comment.
*
* @param int $photoId
* @param int $commentId
* @return Response
*/
public function show($photoId, $commentId)
{
//
}
}