Thinkphp6连接数据库和模型

连接数据库

  • thinkphp采用内置抽象层将不同的数据库操作进行封装

  • 数据抽象层是基于PDO模式

  • 在根目录的config下的database.php设置数据库连接信息

  • 在database.php配置中,default表示设置默认的数据库连接

  • 在connections配置数据库连接信息,可以写入多个数据库,便于数据库中中切换

    • 使用connect可以用于切换数据库

    • //例如:当前还有另外一个数据库test,里面有tp_user表
      Db:connect('test')->table('tp_user')->select()
      
  • 在model切换目录,使用受保护字段$connection

单数据查询

  • Db::table()中table必须制定完整数据表(包括前缀)
  • 如果只查询一条数据,可以使用find()方法
Db::table('tp_user')->where('id',1)->find();
  • 如果数据库没有查询到数据会返回一个null
  • Db::getLastSql()方法,可以得到最近一条sql查询的原生语句
  • 使用findOrFail()方法同样可以查询一条数据,在没有数据时抛出异常
Db::table('tp_user')->where('id',1)->findOrFail();
  • 使用findOrEmpty()方法也可以查询一条数据,在没有数据时返回一个空数组
Db::table('tp_user')->where('id',2)->findOrEmpty();

数据集查询

  • 获取多列数据,可以使用select()方法,查询不到数据返回空数据集对象
Db::table('tp_user')->select();
  • 多列数据在查询不到数据时返回空数组,使用selectOrFail()抛出异常
Db::table('tp_user')->selectOrFail();
  • 在select()方法后使用toAttay()方法,可以将数据集对象转换成数组
Db::table('tp_user')->select()->toArray();
  • 当数据库配置文件(database.php)设置了前缀,可以使用name()方法忽略前缀
Db::name('user')->select();

其他查询

  • value()方法,可以查询指定字段的值(单个),没有数据会返回null
Db::name('user')->where('id',1)->value('username');
  • column()方法,可以查询指定列的值(多个),没有数据返回空数组
Db::name('user')->column('username');
  • 为了避免内存处理太多数据出错,可以是使用chunk()分批处理数据
Db::name('user')->chunk(3,function ($data){
    foreach ($data as $val){
        dump($val);
    }
});
  • 可以使用游标查询功能,大幅度减少海量数据的内存开销,利用了php生成器特性,每次查询只读一行,在读取时,自动定位到下一行继续读取,使用cursor()方法
$data = Db::name('user')->cursor();
foreach ($data as $val){
    dump($val);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lcxuan27

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值