thinkphp5模型绑定的解释

路由规则和分组支持绑定模型数据,例如:

Route::rule('hello/:id','index/hello/index','GET',[
    'ext'                   =>  'html',
    'bind_model'    =>  [
        'user'  =>  '\app\index\model\User',
    ],
]);

会自动给当前路由绑定 id为 当前路由变量值的User模型数据。就是自动读取到cms_user(我设置了表前缀‘cms_’,设置是‘think_user’)表的对应id数据。下面实例:(这个环节需要链接数据库操作,下面我会把数据表简单展示)

  1. 在application/index/controller新建一个Hello.php,如下:
request->user);//自己封装的打印数据的方法,自己打印下就知道$this->request->user就是自动读取的数据
        $user = $this->request->user;
        return $user;
    }
}
  1. 在application/index/model下面新建一个User.php模型,里面只需要把框架搭好就行,不需要任何方法(有也无所谓),如下:
  1. 我的数据表
thinkphp5模型绑定的解释_第1张图片
  1. 现在执行访问网址:http://tp5.demo/hello/12.html,就能看到页面输出如下json数据:
    {"id":12,"user_name":"车易拍","datetime":1499387617,"thumb":"\/Public\/Uploads\/2017-07-07\/595ef597ae7d4.jpg","is_top":1,"cate_pid":15}
    如果访问的是http://tp5.demo/hello/1.html这个id=1不在数据表中,就会报模型数据不存在:app\index\model\User错误,因为没有查到数据。
  1. 也可以增加限制条件(其他地方不变,只变路由),如:
Route::rule('hello/:id/:user_name','index/hello/index','GET',[
    'ext'                   =>  'html',
    'bind_model'    =>  [
        'user'  =>  ['\app\index\model\User','id&user_name'],
    ],
]);

ps:这块的user_name要和你的数据空中字段对应,否则会报相应错误SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_name1' in 'where clause'

现在访问tp5.demo/hello/12/车易拍.html则也会显示数据空中id=12的内容。
{"id":12,"user_name":"车易拍","datetime":1499387617,"thumb":"\/Public\/Uploads\/2017-07-07\/595ef597ae7d4.jpg","is_top":1,"cate_pid":15}

你可能感兴趣的:(thinkphp5模型绑定的解释)