2016-10-25 3 views
1

Может ли кто-нибудь объяснить эти строки? Как это работает?Что означает Маршрут :: модель в Laravel?

public function boot() 
{ 
    parent::boot(); 

    Route::model('user', App\User::class); 
} 

Далее определите маршрут, который содержит {user} параметр:

$router->get('profile/{user}', function(App\User $user) { 
    // 
}); 
+0

мутноватый, пожалуйста, редактировать и дать некоторые подробности, контекст, и что вы хотите для того чтобы достигнуть. – kebs

+0

Прочитайте документацию https://laravel.com/docs/5.3/routing – frieder

ответ

3

Это называется Route Model Explicit Binding

С этим:

Route::model('user', App\User::class); 

вы говорите: когда Строка 'user' используется в маршруте в качестве параметра, создает модель от App\User::class для меня, который имеет тот же идентификатор, что и параметр, переданный по маршруту. Затем введите модель в обработчик метода маршрута.

Например, URL: 'profile/10' будет соответствовать этому маршруту:

$router->get('profile/{user}', function(App\User $user) { 
    // 
}); 

И в App\User модель с идентификатором 10 будет автоматически извлекаться по Laravel

С общей точки зрения, как правило, в маршрутах вы сделать что-то вроде этого:

public function edit($id) 
{ 
    //fetch the user from db... 
    $user = User::find($id); 

    //do something with the $user... 
} 

с Route Model Binding вы можете сделать:

public function edit(App\User $user) 
{ 
    //do something with $user... 
} 

избегая извлечения модели из базы данных: Laravel сделает это для вас

Смежные вопросы