[processus d'apprentissage thinkphp6] Base de données ThinkPHP6

Base de données ThinkPHP6

  • Les opérations de base de données et de modèle ThinkPHP6 sont indépendantes en tant que bibliothèque ThinkORM
  • Pour utiliser la classe Db, vous devez utiliser l'appel de la méthode de façade ( think\facade\Db )
  • Entrée unifiée pour les opérations de base de données : Db ::

1. Logiciel de gestion de base de données

1. phpMyAdmin (gestion de la base de données des pages Web) 2. Navicat pour MySql (gestion de la base de données du logiciel Windows)

2. Créer une base de données

1. Tableau administrateur

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. Tableau de classification des produits

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. Tableau des produits

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. Tableau des menus

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. Exécutez MySql natif

1. La méthode de requête est utilisée pour exécuter des opérations de requête MySql

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

2. La méthode d'exécution est utilisée pour effectuer des opérations nouvelles et modifiées 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. Requête

1. Recherche de requête de données unique

  • La méthode find renvoie null si le résultat de la requête n'existe pas, sinon renvoie le tableau de résultats
public function index(){
    
    
    $find = Db::table('shop_goods')->find(5);
    print_r($find);
}

2. Sélection de requêtes de données multiples

  • Le résultat de la requête de la méthode select est un tableau à deux dimensions. Si le résultat n'existe pas, un tableau vide est renvoyé
public function index(){
    
    
    $select = Db::table('shop_goods')->select();
    print_r($select);
}

3. Interroger la valeur d'un champ

  • le résultat de la requête de la méthode de valeur n'existe pas, renvoie null
public function index(){
    
    
    $value = Db::table('shop_goods')->value('title');
    print_r($value);
}

4. Interroger la colonne de valeur d'une colonne

  • Le résultat de la requête de la méthode de colonne n'existe pas et un tableau vide est renvoyé
public function index(){
    
    
    $column = Db::table('shop_goods')->column('title');
    print_r($column);
    $column = Db::table('shop_goods')->column('title','id');
    print_r($column);
}

Cinq, ajoutez

1. Ajouter un encart de données

  • La méthode d'insertion renvoie le nombre de données ajoutées avec succès, renvoie généralement 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. Ajoutez une donnée insertGetId

  • La méthode insertGetId ajoute avec succès des données et renvoie la clé primaire d'auto-incrémentation des données ajoutées
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. Ajouter plusieurs données insertAll

  • La méthode insertAll ajoute des données avec succès et renvoie le nombre d'éléments ajoutés avec succès
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. Modifier

1. Modifier la mise à jour des données

  • La méthode de mise à jour renvoie le nombre de données affectées et renvoie 0 si aucune donnée n'a été modifiée
public function index(){
    
    
    $data = ['price'=>'68'];
    $update = Db::table('shop_goods')->where('id',8)->update($data);
    print_r($update);
}

2. Auto-incrémentation

  • La méthode inc incrémente la valeur d'un champ
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. Diminuer déc

  • La méthode dec décrémente la valeur d'un champ
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. Supprimer

1. Supprimer les données supprimer

  • La méthode delete renvoie le nombre de données affectées et renvoie 0 si elles ne sont pas supprimées
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. Supprimer en douceur useSoftDelete

  • Il n'est pas recommandé de supprimer réellement des données pour les données commerciales. Le système TP fournit un mécanisme de suppression réversible
public function index(){
    
    
    # 软删除
    $delete = Db::table('shop_goods')->useSoftDelete('status',3)->delete();
    print_r($delete);
}

8. Autres opérations

  • La méthode de sauvegarde écrit uniformément les données et juge automatiquement s'il faut ajouter ou mettre à jour les données (en fonction de la présence ou non de données de clé primaire dans les données écrites)
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);
}

Remarques : ajouter, supprimer, vérifier et modifier est une opération de routine

9. Ensemble de données

  • Thinkphp fournit de nombreuses méthodes pour traiter les ensembles de données
méthode décrire
versTableau convertir en tableau
est vide Est-ce vide
tous toutes les données
fusionner Fusionner d'autres données
différence Comparer des tableaux, retourner la différence
retourner Échangez des clés et des valeurs dans les données
couper Comparer des tableaux, retourner l'intersection
clés Renvoie tous les noms de clé dans les données
populaire supprimer le dernier élément des données
changement supprimer le premier élément dans les données
débrayer Insérer un élément au début des données
pousser insérer un élément à la fin
réduire Renvoie un tableau sous forme de chaîne à l'aide d'une fonction définie par l'utilisateur
inverse Réorganisation des données dans l'ordre inverse
tronçon Les données sont séparées en plusieurs blocs de données
chaque Exécuter le callback pour chaque élément des données
filtre Filtrer les éléments dans les données avec une fonction de rappel
colonne Renvoie la colonne spécifiée dans les données
trier Trier les données
commande Spécifier le tri des champs
mélanger brouiller les données
tranche intercepter une partie des données
carte Traiter les éléments du tableau avec la fonction de rappel
Filtrer les éléments d'un tableau en fonction des conditions de champ
oùComme Comme élément de filtre de requête
oùPasComme Pas comme élément filtrant
La requête IN filtre les éléments d'un tableau
oùpasdans La requête Not IN filtre les éléments du tableau
oùEntre Entre les éléments de filtres de requête dans un tableau
oùPasEntre Not Between query filtre les éléments d'un tableau
public function index(){
    
    
    $select = Db::table('shop_goods')->select();
    if($select->isEmpty()){
    
    
        echo '未找到数据';
    }
    print_r($select->toArray());
}

10. Exemples

code du contrôleur

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

Afficher le code : 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" /}

Je suppose que tu aimes

Origine blog.csdn.net/qzmlyshao/article/details/131058790
conseillé
Classement