ThinkPHP6数据库

  • 要使用Db类必须使用门面方式(think\facaed\Db) 调用
  • 数据库操作同一入口:Db::

数据库管理软件

  1. phpMyAdmin (网页数据库)
  2. Navicat for MySql (windows软件数据库管理)

创建数据库

  1. 管理员表
CREATE TABLE `shop_admin` ( 
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID', 
`account` varchar(50) NOT NULL COMMENT '账户',
`password` char(32) NOT NULL COMMENT '密码',
`name` varchar(50) NOT NULL COMMENT '姓名',
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭', 
`add_time` int(10) unsigned NOT NULL COMMENT '添加时间', 
PRIMARY KEY (`uid`) 
)ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='后台管理员'; 

INSERT INTO`shop_admin`VALUES(1,'admin','e10adc3949ba59abbe56e057f20f883e','小周',1,1809620325)
  1. 商品分类表
DROP TDROP TABLE IF EXISTS `shop_cat`;
 CREATE TABLE `shop_cat` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) NOT NULL COMMENT '分类名', 
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',  PRIMARY key (`id`) 
)ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分类表'; 
INSERT INTO `shop_cat` VALUES(1,'女装',1); 
INSERT INTO `shop_cat` VALUES(2,'男装',1); 
INSERT INTO `shop_cat` VALUES(3,'童装',1);
INSERT INTO `shop_cat` VALUES(4,'女鞋',1);
INSERT INTO `shop_cat` VALUES(5,'男鞋',1);
INSERT INTO `shop_cat` VALUES(6,'母婴',1);
  1. 商品表
CREATE TABLE `shop_goods`( 
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品ID', 
`cat` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '分类ID', 
`title` varchar(200) NOT NULL COMMENT '商品标题',
`price` double(10,2) unsigned NOT NULL COMMENT '价格', 
`discount` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '折扣', 
`stoke` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '库存', 
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭 3删除', `add_time` int(10) unsigned NOT NULL COMMENT '添加时间', PRIMARY KEY(`id`) 
)ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COMMENT='商品表'; 
INSERT INTO `shop_goods` VALUES(1,1,'lolita裙原创外套斗篷洛丽塔裙子冬季',999.99,0,1100,1,1605163489); 
INSERT INTO `shop_goods` VALUES(2,1,'樱洛芙Lolita原创小裙子',499.99,0,100,1,1605163589);
  1. 菜单表
CREATE TABLE `shop_menu`(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `title` varchar(50) NOT NULL COMMENT '菜单名',
`fid` int(10) NOT NULL COMMENT '父ID',
`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 2关闭',
PRIMARY key(`id`)
)ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='左侧菜单栏'; 
INSERT INTO `shop_menu` VALUES(1,'商品管理',0,1);
INSERT INTO `shop_menu` VALUES(2,'商品列表',1,1); 
INSERT INTO `shop_menu` VALUES(3,'商品分类',1,1); 
INSERT INTO `shop_menu` VALUES(4,'用户管理',0,1);
INSERT INTO `shop_menu` VALUES(5,'用户列表',4,1);
INSERT INTO `shop_menu` VALUES(6,'购物车',4,1); 
INSERT INTO `shop_menu` VALUES(7,'用户地址',4,1); 
INSERT INTO `shop_menu` VALUES(8,'订单管理',4,1); 
INSERT INTO `shop_menu` VALUES(9,'后台管理',0,1); 
INSERT INTO `shop_menu` VALUES(10,'管理员列表',9,1); 
INSERT INTO `shop_menu` VALUES(11,'个人中心',9,1);
INSERT INTO `shop_menu` VALUES(12,'左侧菜单',9,1);

连接数据库

如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。

在全局或者应用配置目录下面的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',     
// 数据库连接配置信息  
    'connections'     => [        'mysql' => [            
// 数据库类型     
    'type'            => env('database.type', 'mysql'),            
// 服务器地址
     'hostname'        => env('database.hostname', '127.0.0.1'),           
// 数据库名  
     'database'        => env('database.database', ''),            
// 用户名  
    'username'        => env('database.username', 'root'),           
// 密码                                                                 'password'        => env('database.password', ''),                                                                            // 端口                                                                           '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,        ],       
                                                                                                           // 更多的数据库配置信息    ], ];

执行原生Mysql

1、query方法用于执行Mysql查询操作

public function index(){  
  $query=Db::query("SELECT * FROM `shop_goods` where status=1"); 
  print_r($query);
   }

2、execute方法用于执行Mysql新增和修改操作

public function index(){
$execute=Db::execute("INSERT INTO `shop_goods` VALUES(3,1,'MOISELLE慕诗春夏重工亮片红色长款收腰连衣裙',999.99,0,1100,1,1605163489))");    
print_r($execute); 
$excute=Db::execute("UPDATE `shop_goods` set `price`='8808' where `id`=3");
print_r($execute); 
 }

框架内-查询操作

1、单条数据查询 find

  • find 方法查询结果不存在,则返回null,否则返回结果数组
public function index(){
	 $find=Db::table('shop_goods')->find(2); 
	 print_r($find);
   }

2、多条数据查询 select

  • select方法查询结果是一个二维数组,如果结果不存在,返回空数组
public function index(){
	$select=Db::table('shop_goods')->select(); 
	print_r($select);
 }

3、查询某个字段的值 value

  • value方法查询结果不存在,返回null
public function index(){
	$value=Db::table('shop_goods')->value('title');    
	print_r($value);
}

4、查询某一列的值 column

  • column 方法查询结果不存在,返回空数据
public function index(){
$column=Db::table('shop_goods')->column('title');
	print_r($column);
	$columns=Db::table('shop_goods')->column('title','id');
	print_r($columns);
}

添加

1、添加一条数据 insert

  • insert 方法添加数据成功返回添加成功的条数,通常情况返回1
public function index(){
	$data=['cat'=>'1','title'=>'小魔仙Lolita洛丽塔','price'=>'398','add_time'=>1605163689]; 
	$insert=Db::table('shop_goods')->insert($data);    
	print_r($insert);
}

2、添加一条数据 insertGetId

  • insertGetId 方法符合数据成功返回数据的自增主键
public function index(){
	$data=['cat'=>'1','title'=>'秋冬新款洋气百搭简约打底衫','price'=>'128','add_time'=>1605163689];
	$insert=Db::table('shop_goods')->insertGetId($data);    
	print_r($insert);
}

3、添加多条数据 insertAll

  • insertAll 方法添加数据成功后返回添加成功的条数
public function index(){
	$data=[
		['cat'=>'2','title'=>'灯芯绒夹克','price'=>'248','add_time'=>1605163689], 
		['cat'=>'1','title'=>'半高领德绒连衣裙','price'=>'128','add_time'=>1605163689],      
		['cat'=>'2','title'=>'长款风衣','price'=>'328','add_time'=>1605163689]
	]; 
	$insert=Db::table('shop_goods')->insertAll($data); 
	print_r($insert);
}

修改

1、修改数据 update

  • update 方法返回影响数据的条数,没修改任何数据返回0
public function index(){
	$data=['price'=>'68'];
	$update=Db::table('shop_goods')->where('id',2)->update($data);
	print_r($update);
}

2、自增inc

  • inc方法自增一个字段的值
public function index(){
	$inc=Db::table('shop_goods')->where('id',3)->inc('stock')->update();
	print_r($inc);    //字段的值增加5
	$inc=Db::table('shop_goods')->where('id',6)->inc('stock',5)->update();
	print_r($inc);
}

3、自减dec

  • dec方法自减一个字段的值
public function index(){
	//字段的值减去1
	$dec=Db::table('shop_goods')->where('id',7)->dec('stock')->update();
	print_r($dec);
	//字段的值减去5
	$dec=Db::table('shop_goods')->where('id',7)->dec('stock',5)->update();
	print_r($dec);
}

删除

1、删除数据 delete

  • delete 方法返回影响数据的条数,没有删除返回0
public function index(){
	//根据条件删除数据
	$delete=Db::table('shop_goods')->where('id',1)->delete();
	print_r($delete);
	//删除主键为2的数据
	$delete=Db::table('shop_goods')->delete(2);
	//删除整表数据
	$delete=Db::table('shop_goods')->delete(true);
	print_r($delete);
}

2、软删除 useSoftDelete

  • 业务数据不建议真实删除数据,TP系统提供了软删除机制
public function index(){
	//软删除
	$delete=Db::table('shop_goods')->useSoftDelete('status',3)->delete();
	print_r($delete);
}

其他操作

  • save方法统一写入数据,自动判断是新增还是更新数据(已写入数据中是否存在主键数据为依据)
public function index(){
	//添加数据
	$data=['cat'=>'2','title'=>'长款风衣','price'=>'328','add_time'=>1605163689];
	$save=Db::table('shop_goods')->save($data);
	print_r($save);
	//修改数据
	$data=['price'=>'99.00','id'=>3];    
	$save=Db::table('shop_goods')->save($data);
	print_r($save);
 }

备注:增删改查是常规操作

数据集

  • Thinkphp提供了很多处理数据集的方法
方法描述
toArray转换为数组
isEmpty是否为空
all所有数据
merge合并其他数据
diff比较数组,返回差值
flip交换数组中的所有键和值
intersect比较数组,返回交集
keys返回数据中的所有键名
pop删除数据中的最后一个元素
shift删除数据中的第一个元素
unshift在数据开头插入一个元素
push在结尾插入一个元素
reduce通过使用用户自定义函数,以字符串返回数组
reverse数据倒序重排
chunk数据分隔为多个数据块
each给数据的每个元素执行回调
filter用回调函数过滤数据中的元素
column返回数据中的指定列
sort对数据排序
order指定字段排序
shuffle将数据打乱
slice截取数据中的一部分
map用回调函数处理数据中的元素
where根据字段条件过滤数组中的元素
whereLikeLike查询过滤元素
whereNotLikeNot Like过滤元素
whereInIN查询过滤数组中的元素
whereNotInNot IN查询过滤数组中的元素
whereBetweenBetween查询过滤数组中的元素
whereNotBetweenNot Between查询过滤数组中的元素
public function index(){
	$select=Db::table('shop_goods')->select();
	if($select->isEmpty()){
	echo "未找到数据";
	} 
	print_r($select->toArray());
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值