一、操作数据库

1、数据库连接配置

数据库默认的相关配置在项目的application\database.php中已经定义好。 只需要在模块的数据库配置文件中配置好当前模块需要连接的数据库的配置参数即可。

模块的数据库配置文件的路径为:application/index/database.php

配置参数 如:数据库名称和端口号

return [
// 数据库名
'database' => 'test',
// 端口
'hostport' => 3306
];

2、查看数据库配置详情

打印config('database')即可查看所有配置

3、连接数据库

$res = Db::connect();

注意:

  • 需要在文件头引入Db类。引入方式为:use think\Db;
  • TP5是憜性加载,即此时虽然已经可以查看到连接数据库的参数信息,但即使配置参数有问题(如数据库不存在)时不会有错误提示。

4、查询数据

(1)运行原生SQL语句(query()查询

1)支持参数绑定

Db::query('select * from think_user where id=?',[8]);

2)支持命名占位符绑定

Db::query('select * from think_user where id=:id',['id'=>8]);

3)支持多个数据库连接

Db::connect($config)->query('select * from think_user where id=:id',['id'=>8]);

(2)查询构造器

1)查询一条数据(结果不存在时,返回null

Db::table('think_user')->where('status',1)->find();

【定义了数据表前缀】

Db::name('user')->where('status',1)->find();

【助手函数:默认每次都会重新连接数据库】

db('user')->where('status',1)->find(); 

【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】

db('user',[],false)->where('status',1)->find(); 

【使用查询对象进行查询】

$query = new \think\db\Query();
$query->table('think_user')->where('status',1);
Db::find($query);

【直接使用闭包函数】

Db::find(function($query){
$query->table('think_user')->where('status',1);
});

2)查询多条数据(结果不存在时,返回空数组

Db::table('think_user')->where('status',1)->select();

【定义了数据表前缀】

Db::name('user')->where('status',1)->select();

【助手函数:默认每次都会重新连接数据库】

db('user')->where('status',1)->select(); 

【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】

db('user',[],false)->where('status',1)->select(); 

【使用查询对象进行查询】

$query = new \think\db\Query();
$query->table('think_user')->where('status',1);
Db::select($query);

【直接使用闭包函数】

Db::select(function($query){
$query->table('think_user')->where('status',1);
});

3)查询某个字段的值

Db::table('think_user')->where('id',1)->value('name');

4)查询某一列的值

Db::table('think_user')->where('status',1)->column('name');

5)查询多列的值

Db::table('think_user')->where('status',1)->field('id,name')->select(); //查询id和name两列的所有记录

6)数据集分批处理

7)JSON类型数据查询

5、添加数据

(1)添加一条数据insert()----添加成功返回1

$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);

(2)添加多条数据insertAll()----添加成功返回添加成功的记录条数

$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);

(3)助手函数

// 添加单条数据
db('user')->insert($data); // 添加多条数据
db('user')->insertAll($list);

(4)快捷更新(V5.0.5+)

Db::table('data')
->data(['name'=>'tp','score'=>1000])
->insert();

ThinkPHP5入门(三)----模型篇的更多相关文章

  1. ThinkPHP5入门(基础篇)

    ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,并且拥有众多的 ...

  2. Qt入门之基础篇(三):掌握Qt4的静态编译基本方法

    转载载请注明出处:CN_Simo. 导语: 前两章都提到过“静态编译”(Static Compilation),在Windows下一次静态编译差不多需要长达三个小时才能完成,而且还非常容易由于各种原因 ...

  3. Spring Cloud 入门 之 Feign 篇(三)

    原文地址:Spring Cloud 入门 之 Feign 篇(三) 博客地址:http://www.extlight.com 一.前言 在上一篇文章<Spring Cloud 入门 之 Ribb ...

  4. ElasticSearch入门 第四篇:使用C#添加和更新文档

    这是ElasticSearch 2.4 版本系列的第四篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  5. Entity Framework 6.0 入门系列 第一篇

    Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...

  6. IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...

  7. 【转帖】H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...

  8. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  9. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  10. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

随机推荐

  1. spring中AOP的AspectJ的Execution表达式

    AspectJ的Execution表达式: 使用springAOP定义pointcut里面的execution表达式: execution()函数是常用的切点函数 "execution(* ...

  2. 【SSH网上商城项目实战12】添加和更新商品功能的实现

    转自: https://blog.csdn.net/eson_15/article/details/51366370 添加商品部分原理和添加商品类别是一样的,不过要比商品类别复杂,因为商品的属性有很多 ...

  3. java poi处理新版xlsx后缀的excel

    jar包下载地址http://poi.apache.org/download.html#POI-3.17,我把下载文件中的所有jar包都导入项目中才能跑 参考以下博客 https://www.cnbl ...

  4. HTTP协议的内容协商

    一.前言 我们在日常的抓包过程中经常可以看到以Accept开头的请求首部,比如:Accept-Language 有一个q值,肯定有人好奇在HTTP规范中为什么要定义这个q值:还有在响应首部有一个名为V ...

  5. java设计模式-----9、观察者模式

    Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对 ...

  6. MVC 导出Execl 的总结几种方式 (二)

    接着上面的来,继续导出Execl 的功能 使用FileResult 方式直接可以生产Execl ,这样我们将会写大量处理后台的代码,个人感觉不好,只是展示出来,提供参考 第一步:编辑控制器 publi ...

  7. C# 调用C/C++动态链接库,结构体中的char*类型

    用C#掉用C++的dll直接import就可以之前有不同的类型对应,当要传递结构体的时候就有点麻烦了,这里有一个结构体里边有char*类型,这个类型在C#中调用没法声明,传string是不行的默认st ...

  8. hashlib 文件校验,MD5动态加盐返回加密后字符

    hashlib 文件校验 # for循环校验 import hashlib def check_md5(file): ret = hashlib.md5() with open(file, mode= ...

  9. 简单的sqlserver批量插入数据easy batch insert data use loop function in sqlserver

    --example 1: DECLARE @pid INT,@name NVARCHAR(50),@level INT,@i INT,@column2 INT SET @pid=0 SET @name ...

  10. 解析json结构绘制canvas

    在工作中偶尔会遇到绘制转发卡/邀请卡的业务,且这个转发卡/邀请卡的风格会有很多,要求最后生成图片.这时候如果使用一张图片绘制一个canvas,这个工作量会相当大.分析一下转发邀请的内容,会发现所有的里 ...