一、操作数据库

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. 时间复杂度为O(logN)的常用算法

    时间复杂度为O(logN)的常用算法 折半查找 /* * 折半查找 * 默认查找的数组已经排过序 */ public static int binarySearch(int[] a,int x){ i ...

  2. 常用SEO优化

  3. html+css 百度首页练习

    这几天看完了<css权威指南>,写了个百度页面,不带js的纯静态,主要目的就是掌握页面布局,字体颜色之类的没有深究. 写完了觉得很简单,毕竟一开始觉得只要模仿的像就行,但是缩小了浏览器窗口 ...

  4. Unable to update index for central http://repo1.maven.org/maven2/ 解决方法

    不知道什么原因 MyEclipse(eclipse) 中的 maven 插件突然不能用了,修改 pom.xml 无任何反应 控制台报 Unable to update index for centra ...

  5. Android GridView异步加载图片和加载大量图片时出现Out Of Memory问题

    我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application No R ...

  6. Android ListView实现新闻客户端的新闻内容图文混排

    布局文件: <LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/andro ...

  7. unity震动效果

    using System.Collections; using System.Collections.Generic; using UnityEngine; //思想:在短时间内在规定圆内随机震动对象 ...

  8. Scala编程实战

    项目概述 需求 目前大多数的分布式架构底层通信都是通过RPC实现的,RPC框架非常多,比如前我们学过的Hadoop项目的RPC通信框架,但是Hadoop在设计之初就是为了运行长达数小时的批量而设计的, ...

  9. SQL读取注册表值

    最近写一个自动检查SQL Serve安全配置的检查脚本,需要查询注册表,下面是使用SQL查询注册表值的方法. ) ) ) ) --For Named instance --SET @Instance ...

  10. Oracle SQL语句操作数字:取整、四舍五入及格式化

    用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字格式化 取整(向下取整): select floor(5.534) from dual;select trunc ...