ThinkPHP5入门(三)----模型篇
一、操作数据库
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入门(三)----模型篇的更多相关文章
- ThinkPHP5入门(基础篇)
ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,自2006年诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,尤其注重开发体验和易用性,并且拥有众多的 ...
- Qt入门之基础篇(三):掌握Qt4的静态编译基本方法
转载载请注明出处:CN_Simo. 导语: 前两章都提到过“静态编译”(Static Compilation),在Windows下一次静态编译差不多需要长达三个小时才能完成,而且还非常容易由于各种原因 ...
- Spring Cloud 入门 之 Feign 篇(三)
原文地址:Spring Cloud 入门 之 Feign 篇(三) 博客地址:http://www.extlight.com 一.前言 在上一篇文章<Spring Cloud 入门 之 Ribb ...
- ElasticSearch入门 第四篇:使用C#添加和更新文档
这是ElasticSearch 2.4 版本系列的第四篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- Entity Framework 6.0 入门系列 第一篇
Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...
- IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁
[来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...
- 【转帖】H5 手机 App 开发入门:概念篇
H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...
随机推荐
- 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题
转自: https://blog.csdn.net/eson_15/article/details/51433247 购物车这一块还剩最后两个问题,就是订单信息的级联入库和页面缓存,这里的 ...
- poj 3070 Fibonacci 矩阵相乘
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7715 Accepted: 5474 Descrip ...
- zoj 1037 最短路
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37 找规律,水题 #include<iostream> #inclu ...
- 洛谷P4165 [SCOI2007]组队(排序 堆)
题意 题目链接 Sol 跟我一起大喊:n方过百万,暴力踩标算! 一个很显然的思路是枚举\(H, S\)的最小值算,复杂度\(O(n^3)\) 我们可以把式子整理一下,变成 \[A H_i + B S_ ...
- html基础概念
一.HyperText Markup Language 内容,html是弱代码语言,代码编写不严谨 1.超链接 <a href="#">超级链接(anchor)& ...
- 利用PIE实现全球云分布图的效果
1.问题背景: 最近项目中获得了一份全球云分布图,客户要求把云显示在全球地图上,出现云的效果,如下图所示: [全球云分布图] [世界地图云示意图] 2.解决思路 咨询专业的业务人员,建议我测试下试试地 ...
- MvcForum作者称该项目进入缓慢更新
MvcForum作者在github上发表 This project is no longer actively developed as I don't have the time. As and w ...
- Manachar算法详解
求解最长回文串之Manachar算法 问题类型: 输入一个字符串,求出其中最大的回文子串.子串的含义是:在原串中连续出现的字符串片段. 回文的含义是:正着看和倒着看相同,如abba和yyxyy. 这类 ...
- Rxjava学习(一基础篇)
一.Rxjava跟EventBus的区别 RxJava 是一个响应式编程框架,通过一种扩展的观察者设计模式来实现异步操作. 跟AsyncTask和Handler类似,但是比AsyncTask和Hand ...
- 在小程序中修改上一个页面里data中的数据调用上一个页面的方法
//获取已经打开的页面的数组 var pages = getCurrentPages(); //获取上一个页面的所有的方法和data中的数据 var lastpage = pages[pages.l ...