Поиск…
Неявное связывание
Laravel автоматически разрешает модели Eloquent, определенные в маршрутах или действиях контроллера, имена переменных которых соответствуют имени сегмента маршрута. Например:
Route::get('api/users/{user}', function (App\User $user) {
return $user->email;
});
В этом примере, поскольку пользовательская переменная Eloquent $, определенная на маршруте, соответствует сегменту {user} в URI маршрута, Laravel автоматически вводит экземпляр модели, у которого есть идентификатор, соответствующий соответствующему значению из URI запроса. Если экземпляр сопоставимой модели не найден в базе данных, 404 HTTP-ответ будет автоматически сгенерирован.
Если имя таблицы модели составлено из нескольких слов, чтобы заставить неявную привязку модели работать, входная переменная должна быть все строчной;
Например, если пользователь может выполнить какое-то действие , и мы хотим получить доступ к этому действию, маршрут будет:
Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) {
return $useraction->description;
});
Явное связывание
Чтобы зарегистрировать явное связывание, используйте метод модели маршрутизатора, чтобы указать класс для данного параметра. Вы должны определить свои явные привязки модели в методе загрузки класса RouteServiceProvider
public function boot()
{
parent::boot();
Route::model('user', App\User::class);
}
Затем мы можем определить маршрут, содержащий параметр {user}.
$router->get('profile/{user}', function(App\User $user) {
});
Поскольку мы привязали все параметры {user}
к модели App\User
, пользовательский экземпляр будет введен в маршрут. Так, например, запрос к profile/1
будет вводить экземпляр пользователя из базы данных с идентификатором 1 .
Если экземпляр соответствующей модели не найден в базе данных, 404 HTTP- ответ будет автоматически сгенерирован.