美文网首页
PHP Laravel学习之路由模型绑定

PHP Laravel学习之路由模型绑定

作者: 唐朝早晨 | 来源:发表于2018-07-18 21:24 被阅读0次

    官方文档传送门;http://laravelacademy.org/post/7783.html


    路由模型绑定

    注入模型 ID 到路由或控制器动作时,通常需要查询数据库才能获取相应的模型数据。Laravel 路由模型绑定让注入模型实例到路由变得简单,例如,你可以将匹配给定 ID 的整个 User 类实例注入到路由中,而不只是注入用户 ID。

    隐式绑定

    Laravel 会自动解析定义在路由或控制器动作(变量名匹配路由片段)中的 Eloquent 模型类型声明

    具体实现:
    在api.php文件下创建如下代码:

    //该类型声明了 Eloquent 模型 App\User
    //对应的变量名 $user 会匹配路由片段中的 {user},这样,Laravel 会自动注入与请求 URI 中传入的 ID 对应的用户模型实例。
    Route::get('users/{user}', function (App\User $user) {
        dd($user);
    });
    

    由于要对数据库进行操作所有要修改根目录下.env的配置文件:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=valet        //数据库
    DB_USERNAME=root       //用户名
    DB_PASSWORD=root       //密码
    

    使用的数据库可以自己创建也可以用已经有的。
    然后基于 Laravel 强大的数据库迁移功能创建 users 表:

    php artisan migrate
    
    迁移users表成功
    效果图

    基于 Laravel 强大的数据库填充器来快速完成数据填充功能,首先通过如下命令生成 users 对应的数据表填充器:
    输入命令:

    php artisan make:seeder UsersTableSeeder
    

    该命令会在 database/seeds 目录下生成一个 UsersTableSeeder 文件,编辑该文件如下内容:


    UserTableSeeder文件

    然后修改同文件夹下DatabaseSeeder.php文件如下:


    DatabaseSeeder文件
    最后执行如下命令:
    php artisan db:seed
    

    为表中插入数据显示如下:

    通过命令插入的数据
    最后在浏览器输入:http://localhost:8000/api/users/1显示如下内容:
    显示绑定成功
    如果出现访问不到页面时因为匹配的模型实例在数据库不存在,请正确查看你的数据库里是否有数据;

    显示绑定

    有隐式绑定就一定有显示绑定,要注册显式绑定,可以使用路由器的 model 方法来为给定参数指定绑定类,具体实现如下:
    1、在app\Providers\RouteServiceProvider.php下RouteServiceProvider 类的 boot 方法中定义显式模型绑定:


    显示模型绑定

    2、在api下创建一个带{user}参数的路由:

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

    由于我们已经绑定 {user_model} 参数到 App\User 模型,User 实例会被注入到该路由。因此,如果请求 URL 是 http://localhost:8000/api/profile/1,就会注入一个用户 ID 为 1 的 User 实例;

    相关文章

      网友评论

          本文标题:PHP Laravel学习之路由模型绑定

          本文链接:https://www.haomeiwen.com/subject/szeapftx.html