美文网首页
thinkphp5模型绑定的解释

thinkphp5模型绑定的解释

作者: 呦丶耍脾气 | 来源:发表于2017-09-18 16:16 被阅读944次

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

    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,如下:
    <?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;
        }
    }
    
    1. 在application/index/model下面新建一个User.php模型,里面只需要把框架搭好就行,不需要任何方法(有也无所谓),如下:
    <?php
    namespace app\index\model;
    use think\Model;
    
    class User extends Model
    {
    }
    
    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模型绑定的解释

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