路由规则和分组支持绑定模型数据,例如:
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数据。下面实例:(这个环节需要链接数据库操作,下面我会把数据表简单展示)
- 在application/index/controller新建一个
Hello.php
,如下:
<?php
namespace app\index\controller;
use think\Controller;
class Hello extends Controller{
public function index(){
// dd($this->request->user);//自己封装的打印数据的方法,自己打印下就知道$this->request->user就是自动读取的数据
$user = $this->request->user;
return $user;
}
}
- 在application/index/model下面新建一个
User.php
模型,里面只需要把框架搭好就行,不需要任何方法(有也无所谓),如下:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
}
- 我的数据表
- 现在执行访问网址:
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
错误,因为没有查到数据。
- 也可以增加限制条件(其他地方不变,只变路由),如:
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}