dbfunction.php,db助手函数 - ThinkPHP5数据库实例详解 - php中文网手册

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表中数据如下:

7312e69d212d9a9fa09143571b0d25b8.png

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

Index.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()助手函数选择表操作,是最简洁的,连类引入都省略了,动手试一下吧~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值