Laravel 路由的使用--隐式绑定

## 隐式绑定

Laravel 会自动解析定义在路由或控制器行为中与类型提示的变量名匹配的路由段名称的 Eloquent 模型。例如:

```

Route::get('api/users/{user}', function (App\User $user) {

    return $user->email;

});

```

在这个例子中,==由于 $user 变量被类型提示为 Eloquent 模型 App\User,变量名称又与 URI 中的 {user} 匹配,因此,Laravel 会自动注入与请求 URI 中传入的 ID 匹配的用户模型实例==。如果在数据库中找不到对应的模型实例,将会自动生成 404 异常。

内容来源:https://laravel-china.org/docs/laravel/5.5/routing/1293#179e7e

个人实践:

路由:(URI的命名:使用{user} 代替 {id})

```

## 个人设置

    $router->get('user/{user}/edit', 'UserController@edit')->name('user.edit');

```

### 控制器

```

namespace App\Http\Controllers\Admin;

use App\Models\User;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

class UserController extends BaseController

{

    //

    /**

    * 用户基本信息

    * @param User $user

    * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View

    */

    public function edit(User $user)

    {

        \Log::info(__FUNCTION__ . ':' . $user);

        return $this->backend_view('user.edit', compact('user'));

    }

}

```

### 日志

```

[2019-01-08 13:01:54] local.DEBUG: [12.77ms] select * from `users` where `id` = '1' limit 1 

[2019-01-08 13:01:54] local.INFO: edit:{"id":1,"name":"JJG","email":"[email protected]","created_at":"2018-12-15 09:04:34","updated_at":"2019-01-07 19:54:04","username":"JJG","sex":1,"login_at":null,"login_ip":null,"avatar":null,"bool_admin":1,"status":1}

```

你可能感兴趣的:(Laravel 路由的使用--隐式绑定)