ThinkPHP6之数据库操作下


前言

数据库操作除了增,删,查,改,这四个基本操作外,还有一些细节东西处理,记住这句话,了解对应的链式操作用链式操作,不懂链式操作直接使用query()和excute()


一,查询表达式

在进行查询表达式之前做如下两件事:

  1. 添加sql语句
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', 'yk', 1, 1576080000);

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

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


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);
  1. 在app\controller\index.php文件的index方法中写代码

1.1 where

  1. 模糊查询like
  $user = Db::table('shop_menu')->where('title', 'like', '商品%')->select()->toArray();
        printf('<pre>%s</pre>', print_r($user, true));

        $user = Db::table('shop_menu')->where('title', 'not like', '商品%')->select()->toArray();
        printf('<pre>%s</pre>', print_r($user, true));
  1. 区间查询between
  $user = Db::table('shop_cat')->where('id', 'between', '3,6')->select()->toArray();
        printf('<pre>%s</pre>', print_r($user, true));

        $user = Db::table('shop_cat')->where('id','not between','3,6')->select()->toArray();
        printf('<pre>%s</pre>', print_r($user, true));

  1. 内容查询in
 $user = Db::table('shop_cat')->where('id', 'in', '3,6,1')->select()->toArray();
        printf('<pre>%s</pre>', print_r($user, true));

        $user = Db::table('shop_cat')->where('id', 'not in', '3,6,1')->select()->toArray();
        printf('<pre>%s</pre>', print_r($user, true));

1.2table和name

  1. table要写完整的前缀
  2. name不写完整的前缀,在config\database.php数据库配置 ‘prefix’
        $menu = Db::name('menu')->select()->toArray();
        printf('<pre>%s</pre>', print_r($menu, true));

        $menu = Db::name('menu')->select()->toArray();
        printf('<pre>%s</pre>', print_r($menu->order('fid,asc'), true));

使用name的时候要进行数据库配置,如下所示:
在这里插入图片描述

1.3field

选择哪几行进行输出

 $menu = Db::name('menu')->field('id,fid')->select()->toArray();
        printf('<pre>%s</pre>', print_r($menu, true));

注意要查询的字段用一个引号阔起来

1.4limit

如果只有一个参数就是获取多少条数据,两个参数就是从多少条开始,并且取多少条数据

   $menu = Db::name('menu')->limit(7,5)->select();
        printf('<pre>%s</pre>', print_r($menu, true));

1.5page

第一个参数是第几页,第二个参数就是每页有多少数据

 $menu = Db::name('menu')->page(2,2)->select();
        printf('<pre>%s</pre>', print_r($menu, true));

1.6 order

<?php

namespace app\controller;

use think\facade\View;
use think\facade\Db;

class Index
{
    public function index()
    {
        
        $menu = Db::name('menu')->order('id','desc')->select()->toArray();
        printf('<pre>%s</pre>', print_r($menu, true));

    }
}

二, 聚合查询

如下式聚合函数

在这里插入图片描述

$menu = Db::name('menu')->count();
printf('<pre>%s</pre>', print_r($menu, true));
$menu = Db::name('menu')->where('id','>=',3)->count();
printf('<pre>%s</pre>', print_r($menu, true));

其他的自己测验

三,分页查询

分页查询教程地址


总结

要使用框架的什么功能,就添加上什么类,比如,要使用数据库操作,添加use think\facade\Db,要使用View,就使用use think\facade\view,要使用model功能,就添加use think\model

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全天天学

你的鼓励是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值