• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

ThinkPHP6 数据库

Data: 2020-10-10 04:42:30Form: JournalClick: 12

# ThinkPHP6 数据库

  • ThinkPHP6 数据库和模型操作已经独立为ThinkORM库
  • 要使用Db类必须使用门面方式( think\facade\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, 'ouyangke', 'e10adc3949ba59abbe56e057f20f883e', '欧阳克', 1, 1576080000);

# 2、商品分类表

DROP 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);
INSERT INTO `shop_cat` VALUES (7, '电脑', 1);

# 3、商品表

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 '折扣',
    `stock` 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, '云朵般轻盈的仙女裙 高级钉珠收腰长裙 气质无袖连衣裙', 279.99, 0, 1100, 1, 1576080000);
INSERT INTO `shop_goods` VALUES (2, 1, '高冷御姐风灯芯绒a字连衣裙女秋冬2019年新款收腰显瘦复古裙子', 255.90, 0, 100, 1, 1576080000);

# 4、菜单表

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);

# 三、执行原生 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, '2019秋冬新款时尚简约纯羊绒加厚圆领羊绒长裙显瘦气质连衣裙女', 1179.00, 0, 200, 1, 1576080000)");
    print_r($execute);
    $execute = Db::execute("UPDATE `shop_goods` set `price`='1100' where `id`=3 ");
    print_r($execute);
}

# 四、查询

# 1、单条数据查询 find

  • find 方法查询结果不存在,返回 null,否则返回结果数组
public function index(){
    $find = Db::table('shop_goods')->find(5);
    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);
    $column = Db::table('shop_goods')->column('title','id');
    print_r($column);
}

# 五、添加

# 1、添加一条数据 insert

  • insert 方法添加数据成功返回添加成功的条数,通常情况返回 1
public function index(){
    $data = ['cat'=>'1','title'=>'日系小浪漫与温暖羊毛针织拼接网纱百褶中长收腰连衣裙','price'=>'1598.35','add_time'=>1576080000];
    $insert = Db::table('shop_goods')->insert($data);
    print_r($insert);
}

# 2、添加一条数据 insertGetId

  • insertGetId 方法添加数据成功返回添加数据的自增主键
public function index(){
    $data = ['cat'=>'1','title'=>'针织毛衣连衣裙2019秋冬新款气质宽松羊毛长袖中长款休闲打底裙女','price'=>'690.00','add_time'=>1576080000];
    $insert = Db::table('shop_goods')->insertGetId($data);
    print_r($insert);
}

# 3、添加多条数据 insertAll

  • insertAll 方法添加数据成功返回添加成功的条数
public function index(){
    $data = [
        ['cat'=>'1','title'=>'秋冬加厚连衣裙女超长款宽松羊绒衫高领套头过膝毛衣百搭针织长裙','price'=>'658.00','add_time'=>1576080000],
        ['cat'=>'1','title'=>'2019新款秋冬慵懒风宽松毛衣针织连衣裙复古港味网红两件套','price'=>'408.00','add_time'=>1576080000],
        ['cat'=>'2','title'=>'男士长袖t恤秋季圆领黑白体恤T 纯色上衣服打底衫男装','price'=>'99.00','add_time'=>1576080000]
    ];
    $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',8)->update($data);
    print_r($update);
}

# 2、自增 inc

  • inc 方法自增一个字段的值
public function index(){
    $inc = Db::table('shop_goods')->where('id',5)->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',8)->dec('stock',5)->update();
    print_r($dec);
}
Name:
<提交>