PHP教程

thinkphp5-数据库

本文主要是介绍thinkphp5-数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

基本使用

mysql生成数据库

create database tp5;
use tp5;

mysql生成数据表

create table user(
    id int unsigned NOT NULL AUTO_INCREMENT,
    name varchar(100),
    status tinyint(2),
    primary key(id)
    )engine=innodb charset=utf8mb4;

数据库配置

<?php
return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'tp5',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => 'root_123456',
    // 端口
    'hostport'        => '',
    // 连接dsn
    'dsn'             => '',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => '',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 自动读取主库数据
    'read_master'     => false,
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 自动写入时间戳字段
    'auto_timestamp'  => false,
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
    // 是否需要进行SQL性能分析
    'sql_explain'     => false,
];

命名空间

use think\Db;

添加数据

Db::execute('insert into user (name,status) values (:name,:status)',['name'=>'huyongjian1','status'=>1]);
Db::execute('insert into user (name,status) values (:name,:status)',['name'=>'huyongjian2','status'=>1]);
Db::execute('insert into user (name,status) values (:name,:status)',['name'=>'huyongjian3','status'=>1]);

获取数据

$user = Db::query('select * from user where id=:id',['id'=>1]);
dump($user);

查询构造器

查询数据

获取一条数据

$user = Db::table('user')->where('id',2)->find();
dump($user);

获取多条数据

$users = Db::table('user')->where('status',1)->select();
       dump($users);
添加数据

添加一条数据

$data = ['name' => 'huyongjian3', 'status' => 1];
Db::table('user')->insert($data);

添加多条数据

$data = [
    ['name' => 'huyongjian4', 'status' => 1],
    ['name' => 'huyongjian5', 'status' => 0],
    ['name' => 'huyongjian6', 'status' => 1],
];
Db::table('user')->insertAll($data);
更新数据
Db::table('user')->where('id', 1)->update(['name' => 'huyongjian1']);
删除数据
Db::table('user')->delete(1);
Db::table('user')->where('id',1)->delete();
聚合查询
Db::table('user')->count();
Db::table('user')->max('id');
Db::table('user')->min('id');
Db::table('user')->avg('id');
时间查询
Db::table('user')->whereTime('birthday', '>=', '1970-10-1')->select();
// 小于某个时间
Db::table('user')->whereTime('birthday', '<', '2000-10-1')->select();
// 时间区间查询
Db::table('user')->whereTime('birthday', 'between', ['1970-10-1', '2000-10-1'])->select();
// 不在某个时间区间
Db::table('user')->whereTime('birthday', 'not between', ['1970-10-1', '2000-10-1'])->select();
查询事件
Query::event('before_select',function($options,$query){
            //$options 当前查询数组信息
            //$query query对象
            //事件处理
});
事务

自动事务处理

Db::transaction(function(){
            Db::table('user')->find(1);
            Db::table('user')->delete(1);
        });

手动事务处理

// 启动事务
Db::startTrans();
try{
    Db::table('user')->find(1);
    Db::table('user')->delete(1);
    // 提交事务
    Db::commit();    
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}
这篇关于thinkphp5-数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!