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());
}
### 回答1: ThinkPHP 6 中默认使用的是小写字母的表名。如果你想要将表名转换为大写字母,可以在配置文件 config/database.php 中的 'identifier_quote_character' 配置项中设置为 `"`,这样所有表名都将被转换为大写字母。 例如: ``` 'identifier_quote_character' => '"', ``` 但是强烈不建议使用大写字母命名表名,因为大多数数据库系统都是区分大小写的,容易造成命名空间的混淆,导致程序运行错误。 ### 回答2: 在ThinkPHP6中,数据库表名的转换可以通过配置文件进行设置,具体的配置项是`'db_table_name_convert'`。 首先,在`config/database.php`文件中,我们需要找到`'connections'`数组下的相应数据库连接配置项,例如`'mysql'`,然后在该配置项中加入`'db_table_name_convert'`这个配置项,如下所示: ```php 'mysql' => [ // ... 'db_table_name_convert' => true, // ... ], ``` 将`'db_table_name_convert'`设置为`true`,表示开启数据库表名转换功能。 默认情况下,ThinkPHP6会将数据库表名转换为小写字母,加上数据表前缀,并用下划线连接单词。但如果我们将`'db_table_name_convert'`设置为`true`,则可以将数据库表名转换为大写字母。 例如,有一个名为`user_info`的表,如果开启数据库表名转换功能后,它会被转换为`USER_INFO`。 总之,要将数据库表名转换为大写字母,只需要将ThinkPHP6中相应的数据库连接配置项中的`'db_table_name_convert'`设置为`true`即可。使用这种方式可以灵活控制数据库表名的大小写格式。 ### 回答3: 在ThinkPHP6中,数据库表名的转换为大写字母可以通过配置文件进行设置。具体步骤如下: 1. 打开项目目录下的`config`文件夹,找到`database.php`文件。 2. 打开`database.php`文件后,找到`'params'`数组中的`'table_name'`键,该键用于设置数据库表名的转换规则。 3. 默认情况下,`'table_name'`的值为空数组`[]`,表示不对数据库表名进行任何转换操作。可以在该数组中设置转换规则。 4. 要将数据库表名转换为大写字母,可以设置`'table_name'`的值为`['strtolower' => 'strtoupper']`。这里的`'strtolower'`和`'strtoupper'`是PHP内置的函数,分别用于将字符串转换为小写和大写。 5. 设置完成后,将`'database.php'`文件保存并关闭。 完成以上步骤后,在ThinkPHP6中使用数据库时,所有数据库表名都会被自动转换为大写字母。例如,数据库中的`user`表会被转换为`USER`。 需要注意的是,修改`database.php`配置文件后,需要重启项目才能生效。 以上就是将ThinkPHP6数据库表名转换为大写字母的方法,希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值