Szukaj…
Powiązanie niejawne
Laravel automatycznie rozpoznaje Elokwentne modele zdefiniowane w trasach lub działaniach kontrolera, których nazwy zmiennych pasują do nazwy segmentu trasy. Na przykład:
Route::get('api/users/{user}', function (App\User $user) {
return $user->email;
});
W tym przykładzie, ponieważ zmienna użytkownika Eloquent $ zdefiniowana na trasie pasuje do segmentu {użytkownik} w URI trasy, Laravel automatycznie wstrzykuje instancję modelu, która ma identyfikator pasujący do odpowiedniej wartości z URI żądania. Jeśli w bazie danych nie zostanie znalezione pasujące wystąpienie modelu, odpowiedź HTTP 404 zostanie wygenerowana automatycznie.
Jeśli nazwa tabeli modelu składa się z wielu słów, aby niejawne wiązanie modelu działało, zmienna wejściowa powinna być pisana małymi literami;
Na przykład, jeśli użytkownik może wykonać jakąś akcję , a my chcemy uzyskać dostęp do tej akcji, trasa będzie:
Route::get('api/useractions/{useraction}', function (App\UserAction $useraction) {
return $useraction->description;
});
Jawne wiązanie
Aby zarejestrować jawne powiązanie, użyj metody modelu routera, aby określić klasę dla danego parametru. Powinieneś zdefiniować swoje jawne powiązania modelu w metodzie rozruchu klasy RouteServiceProvider
public function boot()
{
parent::boot();
Route::model('user', App\User::class);
}
Następnie możemy zdefiniować trasę, która zawiera parametr {użytkownik}.
$router->get('profile/{user}', function(App\User $user) {
});
Ponieważ powiązaliśmy wszystkie parametry {user}
z modelem App\User
, instancja użytkownika zostanie wstrzyknięta w trasę. Na przykład żądanie profile/1
wstrzyknie instancję użytkownika z bazy danych o identyfikatorze 1 .
Jeśli w bazie danych nie zostanie znalezione pasujące wystąpienie modelu, odpowiedź HTTP 404 zostanie wygenerowana automatycznie.