ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

thinkphp6-数据库

2021-10-18 01:04:35  阅读:167  来源: 互联网

标签:status name admin 数据库 Db thinkphp6 time select


连接数据库

数据库环境配置文件 .env

[DATABASE]
USERNAME =  root
PASSWORD =  root

数据库配置文件 config/database.php

<?php

return [
    // 默认使用的数据库连接配置
    'default'         => env('database.driver', 'mysql'),

    // 自定义时间查询规则
    'time_query_rule' => [],

    // 自动写入时间戳字段
    // true为自动识别类型 false关闭
    // 字符串则明确指定时间字段类型 支持 int timestamp datetime date
    'auto_timestamp'  => true,

    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 时间字段配置 配置格式:create_time,update_time
    'datetime_field'  => '',

    // 数据库连接配置信息
    'connections'     => [
        'mysql' => [
            // 数据库类型
            'type'            => env('database.type', 'mysql'),
            // 服务器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 数据库名
            'database'        => env('database.database', 'tp6'),
            // 用户名
            'username'        => env('database.username', 'root'),
            // 密码
            'password'        => env('database.password', 'root'),
            // 端口
            'hostport'        => env('database.hostport', '3306'),
            // 数据库连接参数
            'params'          => [],
            // 数据库编码默认采用utf8
            'charset'         => env('database.charset', 'utf8'),
            // 数据库表前缀
            'prefix'          => env('database.prefix', ''),

            // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
            'deploy'          => 0,
            // 数据库读写是否分离 主从式有效
            'rw_separate'     => false,
            // 读写分离后 主服务器数量
            'master_num'      => 1,
            // 指定从服务器序号
            'slave_no'        => '',
            // 是否严格检查字段是否存在
            'fields_strict'   => true,
            // 是否需要断线重连
            'break_reconnect' => false,
            // 监听SQL
            'trigger_sql'     => env('app_debug', true),
            // 开启字段缓存
            'fields_cache'    => false,
        ],

        // 更多的数据库配置信息
    ],
];

控制器 app/controller/Index.php

<?php

namespace app\controller;

use \think\facade\Db;

class Index
{
    public function index()
    {
        try{
            $data = [
                ['name' => 'huyongjian', 'status' => 1],
                ['name' => 'huyongjian2', 'status' => 1],
                ['name' => 'huyongjian3', 'status' => 1],
                ['name' => 'huyongjian4', 'status' => 1],
                ['name' => 'huyongjian5', 'status' => 1],
            ];
            return Db::name('admin')->insertAll($data);

        }catch (\Exception $e){
            var_dump($e->getMessage());
        }

    }
}

mysql 创建数据库和数据表

create database tp6;
create table admin(
    `id` bigint unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(150) DEFAULT NULL COMMENT '名称', 
    `status` tinyint DEFAULT NULL COMMENT '状态', 
    PRIMARY KEY (`id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

测试与结果

http://127.0.0.1:8000/index
5

查看MySQL数据库结果

mysql> select * from admin;
+----+-------------+--------+
| id | name        | status |
+----+-------------+--------+
|  1 | huyongjian  |      1 |
|  2 | huyongjian2 |      1 |
|  3 | huyongjian3 |      1 |
|  4 | huyongjian4 |      1 |
|  5 | huyongjian5 |      1 |
+----+-------------+--------+
5 rows in set (0.01 sec)

查询构造器

查询数据

Db::table('admin')->where('id', 3)->find();
Db::table('admin')->where('status', 1)->select();
Db::table('admin')->where('status', 1)->select()->toArray();
Db::table('admin')->where('status', 1)->value('name');
Db::table('admin')->where('status', 1)->column('name');
Db::table('admin')->chunk(3, function($users) {
            foreach ($users as $user) {
                var_dump($user);
            }
        });

添加数据

$data = ['name' => 'huyongjian6', 'status' => 0];
Db::name('admin')->save($data);
$data = ['name' => 'huyongjian7', 'status' => 0];
Db::name('admin')->insert($data);
$data = [
    ['name' => 'huyongjian8', 'status' => 1],
    ['name' => 'huyongjian9', 'status' => 1]
];
Db::name('admin')->insertAll($data);
$data = [
    ['name' => 'huyongjian8', 'status' => 1],
    ['name' => 'huyongjian9', 'status' => 1]
];
Db::name('admin')->limit(100)->insertAll($data);

更新数据

Db::name('admin')->save(['id'=>1,'name'=>'HuYongJian','status'=>0]);
Db::name('admin')->where(['id'=>1])->update(['name'=>'huyongjian','status'=>1]);

删除数据

Db::name('admin')->delete(1);
Db::name('admin')->delete([2,3]);
Db::name('admin')->where('id',4)->delete();
Db::name('admin')->where('id','<', 6)->delete();

查询表达式

表达式    含义    快捷查询方法
=    等于    
<>    不等于    
>    大于    
>=    大于等于    
<    小于    
<=    小于等于    
[NOT] LIKE    模糊查询    whereLike/whereNotLike
[NOT] BETWEEN    (不在)区间查询    whereBetween/whereNotBetween
[NOT] IN    (不在)IN 查询    whereIn/whereNotIn
[NOT] NULL    查询字段是否(不)是NULL    whereNull/whereNotNull
[NOT] EXISTS    EXISTS查询    whereExists/whereNotExists
[NOT] REGEXP    正则(不)匹配查询(仅支持Mysql)    
[NOT] BETWEEN TIME    时间区间比较    whereBetweenTime
> TIME    大于某个时间    whereTime
< TIME    小于某个时间    whereTime
>= TIME    大于等于某个时间    whereTime
<= TIME    小于等于某个时间    whereTime
EXP    表达式查询,支持SQL语法    whereExp
find in set    FIND_IN_SET查询    whereFindInSet

聚合查询

Db::name('admin')->count();
Db::name('admin')->max('id');
Db::name('admin')->min('id');
Db::name('admin')->avg('id');
Db::name('admin')->sum('id');

分页查询

$list = Db::name('admin')->order('id', 'desc')->paginate(2);
$page = $list->render();
return view('index', ['list' => $list, 'page' => $page]);

时间查询

// 大于某个时间
Db::name('admin')
    ->whereTime('birthday', '>=', '1970-10-1')
    ->select();
// 小于某个时间
Db::name('admin')
    ->whereTime('birthday', '<', '2000-10-1')
    ->select();
// 时间区间查询
Db::name('admin')
    ->whereTime('birthday', 'between', ['1970-10-1', '2000-10-1'])
    ->select();
// 不在某个时间区间
Db::name('admin')
    ->whereTime('birthday', 'not between', ['1970-10-1', '2000-10-1'])
    ->select();
// 查询两个小时内的博客
Db::name('blog')
    ->whereTime('create_time','-2 hours')
    ->select();
// 查询2017年上半年注册的用户
Db::name('user')
    ->whereBetweenTime('create_time', '2017-01-01', '2017-06-30')
    ->select();

// 查询不是2017年上半年注册的用户
Db::name('user')
    ->whereNotBetweenTime('create_time', '2017-01-01', '2017-06-30')
    ->select();
Db::name('user')
    ->whereYear('create_time')
    ->select();
Db::name('user')
    ->whereYear('create_time', 'last year')
    ->select();
// 查询2018年注册的用户
Db::name('user')
    ->whereYear('create_time', '2018')
    ->select(); 
Db::name('user')
    ->whereMonth('create_time')
    ->select(); 
Db::name('user')
    ->whereMonth('create_time','last month')
    ->select();
Db::name('user')
    ->whereMonth('create_time', '2018-06')
    ->select(); 
Db::name('user')
    ->whereWeek('create_time')
    ->select(); 
Db::name('user')
    ->whereWeek('create_time', 'last week')
    ->select(); 
// 查询2019-1-1到2019-1-7的注册用户
Db::name('user')
    ->whereWeek('create_time', '2019-1-1')
    ->select(); 
Db::name('user')
    ->whereDay('create_time')
    ->select();
Db::name('user')
    ->whereDay('create_time', 'yesterday')
    ->select(); 
// 查询2018年6月1日注册的用户
Db::name('user')
    ->whereDay('create_time', '2018-06-01')
    ->select(); 
// 查询有效期内的活动
Db::name('event')
    ->whereTime('start_time', '<=', time())
    ->whereTime('end_time', '>=', time())
    ->select();

高级查询

Db::table('think_user')
    ->where([
        ['name', 'like', 'thinkphp%'],
        ['title', 'like', '%thinkphp'],
        ['id', '>', 0],
        ['status', '=', 1],
    ])
    ->select();
$map1 = [
        ['name', 'like', 'thinkphp%'],
        ['title', 'like', '%thinkphp'],
    ];

$map2 = [
        ['name', 'like', 'kancloud%'],
        ['title', 'like', '%kancloud'],
    ];    

Db::table('think_user')
    ->whereOr([ $map1, $map2 ])
    ->select();

事务操作

Db::transaction(function () {
    Db::table('admin')->find(6);
    Db::table('admin')->delete(7);
});
// 启动事务
Db::startTrans();
try {
    Db::table('admin')->find(6);
    Db::table('admin')->delete(7);
    // 提交事务
    Db::commit();
} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();
}

标签:status,name,admin,数据库,Db,thinkphp6,time,select
来源: https://www.cnblogs.com/hu308830232/p/15418913.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有