db助手函数

作者: 为啥要创业 | 来源:发表于2018-06-03 20:35 被阅读0次
      • db助手函数的使用
          • 1、功能:选择当前操作的数据表实例(与name方法类似)
          • 2、源码位置:/thinkphp/Helper.php
          • 3、参数与返回值:
          • 4、适用环境:
          • 5、调用语法(以:tp5_staff表为例):
          • 6、实例演示:
          • 7、局限性或注意事项:

    db助手函数的使用

    1、功能:选择当前操作的数据表实例(与name方法类似)

    2、源码位置:/thinkphp/Helper.php

    注意:这是函数,不是方法,没有定义在某个类文件中

    if (!function_exists('db')) {
        /**
         * 实例化数据库类
         * @param string        $name 操作的数据表名称(不含前缀)
         * @param array|string  $config 数据库配置参数
         * @param bool          $force 是否强制重新连接
         * @return \think\db\Query
         */
        function db($name = '', $config = [], $force = true)
        {
            return Db::connect($config, $force)->name($name);
        }
    }
    
    • 源码分析:db助手函数内部仍是通过 name方法来实现的;

    3、参数与返回值:

    • 阅读源码发现:
      • 参数是不含前缀的表名、连接配置参数及其它;
      • 因为数据库连接配置,通常事先配置好,所以只传表名即可;
      • 返回的是查询类Query的对象自身,便于后面链式调用。

    4、适用环境:

    • 如果事先没有配置数据库连接信息,必须传入第二个参数;
    • 第三个参数:是否强制重新连接也必须传值:true;

    5、调用语法(以:tp5_staff表为例):

    • 助手函数helper.php,框架启动自动加载,所以可以直接直接使用助手函数db
    • db助手函数:db('staff');

    6、实例演示:

    • tp5_staff表中数据如下:
      [图片上传中...(image-aa560-1528029337202-0)]

    实例:(省略前缀的表名)选择tp5_staff表,查询id等于1003的数据:

    • Index.php 控制器源文件:
    <?php
    namespace app\index\controller;
    
    class Index  {
        public function index(){ 
    
        //使用db助手函数选择表,并输出查询结果
        dump(db('staff')->find('1003'));
     } 
    
    }
    
    • 运行结果:
    array(7) {
      ["id"] => int(1003)
      ["name"] => string(6) "杨过"
      ["sex"] => int(0)
      ["age"] => int(35)
      ["salary"] => float(5303)
      ["dept"] => string(9) "市场部"
      ["hiredate"] => string(10) "2014-09-22"
    }
    

    7、局限性或注意事项:

    • db()助手函数选择数据表,与name方法完全一样,可替代name方法;
    • 不可以跨库操作,即不可指定数据库前缀;
    • 不可以设置表别名(因为当前表名不简称);
    • 隐藏了太多的操作细节,不利于了解框架的运行流程,容易让初学者产生误解。
    以下是官方手册的的描述:

    注意:使用db助手函数默认每次都会重新连接数据库,而使用 Db::name 或者 Db::table 方法的话都 是单例的。db函数如果需要采用相同的链接,可以传入第三个参数,例如:
    db(‘user’,[],false)->where(‘id’,1)->find();
    db(‘user’,[],false)->where(‘status’,1)->select();
    上面的方式会使用同一个数据库连接,第二个参数为数据库的连接参数,留空表示采用数据库配置文件的 配置。

    相关文章

      网友评论

        本文标题:db助手函数

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