2016-10-25 21 views
1

任何人都可以解釋這些行嗎?怎麼運行的?Route :: model在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對我來說,它具有與傳遞給路由的參數相同的id。然後在路由方法處理程序中注入模型。

例如,URL:'profile/10'將匹配這條路線:

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

App\User模型具有10的ID將由Laravel

被自動提取從一般觀點來看,通常在你的路線,你做這樣的事情:

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

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

與路由模型綁定,你可以這樣做:

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

避免從數據庫讀取模型:Laravel會爲你做它