Поиск…


Неявное связывание

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- ответ будет автоматически сгенерирован.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow