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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow