[proceso de aprendizaje de thinkphp6] Base de datos ThinkPHP6

Base de datos ThinkPHP6

  • Las operaciones de modelo y base de datos ThinkPHP6 han sido independientes como biblioteca ThinkORM
  • Para usar la clase Db, debe usar la llamada al método de fachada ( think\facade\Db )
  • Entrada unificada para operaciones de base de datos: Db::

1. Software de gestión de bases de datos

1. phpMyAdmin (administración de la base de datos de la página web) 2. Navicat for MySql (administración de la base de datos del software de Windows)

2. Crea una base de datos

1. Mesa de administrador

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、商品分类表

2. Tabla de clasificación de productos

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. Lista de productos

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. Mesa de menú

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

3. Ejecutar MySql nativo

1. El método de consulta se utiliza para ejecutar operaciones de consulta MySql

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

2. El método de ejecución se utiliza para realizar operaciones nuevas y modificadas de 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);
}

4. Consulta

1. Búsqueda de consulta de datos únicos

  • El método de búsqueda devuelve nulo si el resultado de la consulta no existe; de ​​lo contrario, devuelve la matriz de resultados
public function index(){
    
    
    $find = Db::table('shop_goods')->find(5);
    print_r($find);
}

2. Selección de consulta de datos múltiples

  • El resultado de la consulta del método de selección es una matriz bidimensional. Si el resultado no existe, se devuelve una matriz vacía.
public function index(){
    
    
    $select = Db::table('shop_goods')->select();
    print_r($select);
}

3. Consultar el valor de un campo

  • el resultado de la consulta del método de valor no existe, devuelve nulo
public function index(){
    
    
    $value = Db::table('shop_goods')->value('title');
    print_r($value);
}

4. Consulta la columna de valor de una columna

  • El resultado de la consulta del método de columna no existe y se devuelve una matriz vacía
public function index(){
    
    
    $column = Db::table('shop_goods')->column('title');
    print_r($column);
    $column = Db::table('shop_goods')->column('title','id');
    print_r($column);
}

cinco, agrega

1. Agregar una inserción de datos

  • El método de inserción devuelve la cantidad de datos agregados con éxito, generalmente devuelve 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. Agregue un dato insertGetId

  • El método insertGetId agrega datos con éxito y devuelve la clave principal de incremento automático de los datos agregados
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. Agregue múltiples datos insertAll

  • El método insertAll agrega datos con éxito y devuelve la cantidad de elementos agregados con éxito
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);
}

6. Modificar

1. Modificar actualización de datos

  • El método de actualización devuelve el número de datos afectados y devuelve 0 si no se ha modificado ningún dato.
public function index(){
    
    
    $data = ['price'=>'68'];
    $update = Db::table('shop_goods')->where('id',8)->update($data);
    print_r($update);
}

2. Incremento propio

  • El método inc incrementa el valor de un campo
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. Disminuir dism

  • El método dec decrementa el valor de un campo
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);
}

7. Eliminar

1. Eliminar datos eliminar

  • El método de eliminación devuelve el número de datos afectados y devuelve 0 si no se eliminan.
public function index(){
    
    
    # 根据条件删除数据
    $delete = Db::table('shop_goods')->where('id',1)->delete();
    print_r($delete);
    # 删除主键为2的数据
    $delete = Db::table('shop_goods')->delete(2);
    print_r($delete);
    # 删除整表数据
    $delete = Db::table('shop_goods')->delete(true);
    print_r($delete);
}

2. Eliminación temporal useSoftDelete

  • No se recomienda eliminar datos para datos comerciales. El sistema TP proporciona un mecanismo de eliminación temporal
public function index(){
    
    
    # 软删除
    $delete = Db::table('shop_goods')->useSoftDelete('status',3)->delete();
    print_r($delete);
}

8. Otras operaciones

  • El método de guardado escribe datos de manera uniforme y juzga automáticamente si agregar o actualizar datos (según si hay datos de clave principal en los datos escritos)
public function index(){
    
    
    # 添加数据
    $data = ['cat'=>'2','title'=>'美特斯邦威七分牛仔裤女2018夏季新款中腰修身洗水牛仔裤商场款','price'=>'49.90','add_time'=>1576080000];
    $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);
}

Observaciones: agregar, eliminar, verificar y modificar es una operación de rutina

9. Conjunto de datos

  • Thinkphp proporciona muchos métodos para procesar conjuntos de datos
método describir
aArray convertir a matriz
esta vacio esta vacio
todo toda la información
unir Combinar otros datos
diferencia Compara matrices, devuelve la diferencia
voltear Intercambiar claves y valores en datos
intersecarse Compara matrices, devuelve intersección
llaves Devolver todos los nombres clave en los datos
estallido eliminar el último elemento en los datos
cambio eliminar el primer elemento en los datos
desarmar Insertar un elemento al principio de los datos.
empujar insertar un elemento al final
reducir Devuelve una matriz como una cadena usando una función definida por el usuario
contrarrestar Reordenamiento de datos en orden inverso
pedazo Los datos se separan en varios bloques de datos
cada Ejecute la devolución de llamada para cada elemento de los datos.
filtrar Filtre elementos en los datos con una función de devolución de llamada
columna Devuelve la columna especificada en los datos.
clasificar ordenar los datos
orden Especificar clasificación de campos
barajar codificar los datos
rebanada interceptar parte de los datos
mapa Procese los elementos de la matriz con la función de devolución de llamada
dónde Filtrar elementos en una matriz según las condiciones del campo
dondeMe gusta Como elemento de filtro de consulta
donde no me gusta No como elemento de filtro
donde La consulta IN filtra elementos en una matriz
dondeNoEn No EN elementos de filtros de consulta en la matriz
dondeentre Entre elementos de filtros de consulta en una matriz
donde no entre No entre elementos de filtros de consulta en una matriz
public function index(){
    
    
    $select = Db::table('shop_goods')->select();
    if($select->isEmpty()){
    
    
        echo '未找到数据';
    }
    print_r($select->toArray());
}

10. Ejemplos

código del controlador

namespace app\controller;
use think\facade\View;
class Index{
    
    
    public function index(){
    
    
        $title = '商城';
        $login = '欧阳克';
        $menu = Db::table('shop_menu')->where('fid',0)->select();
        $left = $menu->toArray();
        foreach($left as &$left_v){
    
    
            $left_v['lists'] = Db::table('shop_menu')->where('fid',$left_v['id'])->select();
        }
        $list = Db::table('shop_goods')->select();
        $right = $list->toArray();
        foreach($right as &$right_v){
    
    
            $right_v['cat'] = Db::table('shop_cat')->where('id',$right_v['cat'])->value('name');
        }
        View::assign([
            'title'  => $title,
            'login' => $login,
            'left' => $left,
            'right' => $right
        ]);
        return View::fetch();
    }
}

Ver código: index.html

{
    
    include file="public/head" /}
{
    
    include file="public/left" /}
<div class="main" style="padding:10px;">
    <div class="content">
        <span>商品列表</span>
        <button class="layui-btn layui-btn-sm" onclick="add()">添加</button>
        <div></div>
    </div>
    <table class="layui-table">
        <thead>
            <tr>
                <th>ID</th>
                <th>商品标题</th>
                <th>分类</th>
                <th>原价</th>
                <th>折扣</th>
                <th>现价</th>
                <th>库存</th>
                <th>状态</th>
                <th>添加时间</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            {
    
    volist name="right" id="right_v"}
                <tr>
                    <td>{
    
    $right_v.id}</td>
                    <td>{
    
    $right_v.title}</td>
                    <td>{
    
    $right_v.cat}</td>
                    <td>{
    
    $right_v.price}</td>
                    <td>{
    
    $right_v.discount}</td>
                    <td>
                        {
    
    if $right_v.discount!=0}
                            {
    
    $right_v.price*($right_v.discount/10)}
                        {
    
    else/}
                            {
    
    $right_v.price}
                        {
    
    /if}
                    </td>
                    <td>{
    
    $right_v.stock}</td>
                    <td>{
    
    if $right_v['status']==1}开启{
    
    else/}关闭{
    
    /if}</td>
                    <td>{
    
    $right_v.add_time|date='Y-m-d'}</td>
                    <td>
                        <button class="layui-btn layui-btn-xs" onclick="edit()">编辑</button>
                        <button class="layui-btn layui-btn-danger layui-btn-xs" onclick="del()">删除</button>
                    </td>
                </tr>
            {
    
    /volist}
        </tbody>
    </table>
</div>
{
    
    include file="public/bottom" /}

Supongo que te gusta

Origin blog.csdn.net/qzmlyshao/article/details/131058790
Recomendado
Clasificación