Я понимаю, с 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
контроллер, у меня был бы дублирующий код, чтобы снова взять команду из базы данных.
Что было бы лучшим способом выполнить обратную цепочку и написать код команды извлечения только в одной точке?
ура
Laravel на самом деле имеет понятие привязка модели маршрута который позаботится об этом для вас. Таким образом, ваш код будет выглядеть примерно так:
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;
});
Вы можете написать класс репозитория, где вы можете получить все данные, например
https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/