Base de données ThinkPHP6.0




Base de données ThinkPHP6

  • Les opérations de la base de données et du modèle ThinkPHP6 ont été indépendantes en tant que bibliothèque ThinkORMThinkORM库

  • 要使用Db类必须使用门面方式( thinkfacadeDb )调用

  • 数据库操作统一入口: Db::

Pour utiliser la classe Db, vous devez utiliser la méthode façade ( thinkfacadeDb < /code>) Appelez

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 base de données de pages Web)

2, Navicat pour MySql (gestion de base de données du logiciel Windows)

2. Créer une base de données

1. Table d'administrateur

CREATE TABLE `shop_admin` (

`uid` int(10) non signé NOT NULL AUTO_INCREMENT COMMENT 'ID utilisateur ',

` account` varchar(50) NOT NULL COMMENT 'Compte',

`password` char(32) NOT NULL COMMENT 'Mot de passe',

`name` varchar(50) NOT NULL COMMENT 'Nom',

`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'State 1 on 2 off',


`add_time` int(10) unsigned NOT NULL COMMENT 'Add time',

PRIMARY KEY (`uid `)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='Backend Administrator';

INSERT INTO `shop_admin` VALUES (1, 'ouyangke', 'e10adc3949ba59abbe56e057f20f883e', 'ouyangke', 1, 1 576080000);

2. Table de classification des produits

DROP TABLE IF EXISTS `shop_cat`;

CREATE TABLE `shop_cat` (

`id` int(10) non signé NOT NULL AUTO_INCREMENT COMMENT 'ID',

`name` varchar(50) NOT NULL COMMENT 'category name',


`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'status 1 on 2 off',

PRIMARY KEY (`id`)

) ENGINE =MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='Tableau de classification';

INSERT INTO `shop_cat` VALUES (1, 'Vêtements pour femmes', 1);

INSERT INTO `shop_cat` VALUES (2, 'Vêtements pour hommes'', 1);

INSÉRER DANS LES VALEURS `shop_cat` (3, 'Maternité', 1);

INSÉRER DANS LES VALEURS `shop_cat` (4, 'Vêtements pour enfants', 1);

INSÉRER DANS LES VALEURS `shop_cat` (5, 'TV', 1);

INSÉRER DANS LES VALEURS `shop_cat` (6, 'Téléphone portable', 1);

INSÉRER DANS LES VALEURS `shop_cat` (7, 'Ordinateur' , 1);

3 , Table des produits

CREATE TABLE `shop_goods` (

`id` int(10) non signé NOT NULL AUTO_INCREMENT COMMENT 'ID produit',

`cat` int(10) non signé NOT NULL PAR DÉFAUT '1' COMMENTAIRE 'ID de classification',🎜🎜 `titre` varchar(200) NON NULL COMMENTAIRE 'Titre du produit',🎜🎜 `prix` double(10,2) non signé NON NULL COMMENTAIRE 'Prix',🎜🎜 ` discount` tinyint(1) non signé NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Remise',🎜

`stock` int(10) non signé NON NULL PAR DÉFAUT '1' COMMENTAIRE 'Stock',

`status` tinyint(1) non signé NON NULL PAR DÉFAUT '1' COMMENTAIRE 'Statut 1 ouvert 2 fermé 3 supprimé',

` add_time` int(10) unsigned NOT NULL COMMENT 'Add time',

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COMMENT='Product table';


INSERT DANS LES VALEURS `shop_goods` (1, 1, 'Jupe féerique légère, jupe longue haut de gamme à taille perlée, robe élégante sans manches', 279,99, 0, 1100, 1, 1576080000);

INSÉRER DANS LES VALEURS `shop_goods` ( 2, 1, 'Robe trapèze en velours côtelé style Cool Royal Sister pour femmes automne et hiver 2019 nouvelle jupe rétro amincissante à la taille', 255.90, 0, 100, 1, 1576080000);

Tableau de menu

CRÉER UNE TABLE ` shop_menu` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',

`title` varchar(50) NOT NULL COMMENT 'nom du menu',

`fid` int(10) NOT NULL COMMENT 'ID parent',

`status` tinyint(1) non signé NON NULL PAR DÉFAUT '1' COMMENTAIRE 'Statut 1 activé 2 désactivé',

CLÉ PRIMAIRE (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET =utf8mb4 COMMENT='Tableau du menu de gauche';


INSERT INTO `shop_menu` VALUES (1, 'Product management', 0, 1);

INSERT INTO `shop_menu` VALUES (2, 'Product management' List ', 1, 1);

INSÉRER DANS LES VALEURS `shop_menu` (3, 'Catégorie de produit', 1, 1);

INSÉRER DANS LES VALEURS `shop_menu` (4, 'Gestion des utilisateurs', 0, 1);

INSÉRER DANS LES VALEURS `shop_menu` (5, 'Liste des utilisateurs', 4, 1);

INSÉRER DANS LES VALEURS `shop_menu` (6, 'Panier', 4, 1);

INSÉRER DANS LES VALEURS `shop_menu` ( 7, 'Adresse utilisateur', 4, 1) ; , 1);

INSÉRER DANS LES VALEURS `shop_menu` (10, 'Liste des administrateurs', 9, 1);

INSÉRER DANS LES VALEURS `shop_menu` (11, 'Centre personnel', 9, 1);

INSÉRER DANS `shop_menu` VALEURS (12, 'Menu de gauche', 9, 1);

3. Exécuter MySql natif

1 La méthode query 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");query 方法用于执行 MySql 查询操作

public function index(){

    $query = Db::query("SELECT * FROM `shop_goods` where status=1");

    print_r($query);

}

2、execute

print_r($query);

}

2、execute < /code>La méthode est utilisée pour effectuer des opérations MySql nouvelles et modifiées

🎜public function index(){🎜🎜 $execute = Db::execute("INSERT INTO `shop_goods` VALUES (3, 1, '2019 Autumn and Winter Nouvelle mode jupe longue en cachemire pur cachemire épaissi à col rond, robe fine et élégante pour femme', 1179.00, 0, 200, 1, 1576080000)");🎜🎜 print_r($execute);🎜

$execute = Db::execute("UPDATE `shop_goods` set `price`='1100'where `id`=3 ");

print_r($execute);

}

Requête

IV. 1. Requête de données unique find

  • find le résultat de la requête n'existe pas, renvoie null, sinon renvoie le tableau de résultatsfind 方法查询结果不存在,返回 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(){


​ $find = Db: :table('shop_goods')->find(5);

print_r($find);

🎜}🎜🎜🎜2. Sélection de requêtes de données multiples🎜🎜🎜🎜select requête de méthode Le résultat 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'une certaine valeur de champ🎜🎜🎜🎜Le résultat de la requête de la méthode value n'existe pas et renvoie null🎜🎜🎜🎜🎜public function index() {🎜🎜🎜 $value = Db::table('shop_goods')->value('title');🎜🎜 print_r($value);🎜🎜}🎜🎜 🎜4. Interroger la valeur d'une colonne colonne🎜🎜 🎜🎜Le résultat de la requête de la méthode column n'existe pas et renvoie un tableau vide🎜🎜🎜🎜🎜public function index(){🎜🎜🎜 $column = Db::table('shop_goods')->column('title');🎜🎜 print_r($column);🎜🎜 $column = Db::table('shop_goods')->column('title', 'id');🎜🎜 print_r($column);🎜 🎜}🎜🎜🎜 5. Ajouter 🎜🎜1. Ajouter une donnée insert🎜🎜🎜🎜insert La méthode ajoute des données avec succès et renvoie le nombre d'éléments ajoutés avec succès. Normalement, il renvoie 1🎜🎜🎜🎜🎜🎜public function index(){🎜🎜🎜 $data = ['cat'=>'1','title'=>'Japanese. robe mi-longue plissée en maille de laine tricotée romantique et chaude','price '=>'1598.35','add_time'=>1576080000];🎜🎜 $insert = Db::table('shop_goods')-> ;insert($data);🎜🎜 print_r($insert);🎜🎜 }🎜🎜🎜2. Ajouter une donnée insertGetId🎜🎜🎜🎜insertGetId La méthode ajoute des données avec succès et renvoie l'auto -clé primaire incrémentée des données ajoutées🎜🎜🎜🎜🎜🎜index de fonction publique(){🎜🎜🎜​ $data = ['cat'=>'1','title'=>'Robe pull tricotée 2019 automne et hiver nouveau style jupe ample en laine à manches longues mi-longue décontractée pour femme','price'=>'690.00', 'add_time'=>1576080000];🎜

$insert = Db::table('shop_goods')->insertGetId($data);

print_r($insert);

}

3. Ajoutez plusieurs éléments de données insertAll

  • INSERTALL Méthode pour ajouter des données pour revenir avec succès pour ajouter un numéro réussi 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

Indice de fonction publique () {

$ data = [

['cat' = & gt; 'title' > 'cat'=>'1','title'=>'2019 Nouvel automne et hiver style paresseux pull ample robe tricotée rétro style Hong Kong ensemble deux pièces de célébrité d'Internet','price'=> '408.00','add_time' =>1576080000],

['cat'=>'2','title'=>'T-shirt manches longues homme automne col rond T-shirt noir et blanc hauts et chemises de couleur unie pour hommes','price'= >'99.00','add_time'=>1576080000]

];

$insert = Db::table('shop_goods')->insertAll ($data);

🎜 print_r($insert);🎜 🎜}🎜🎜

6 Modification

🎜1. La méthode Modifier la mise à jour des données🎜🎜🎜🎜update renvoie le numéro. des données concernées, si aucune donnée n'est modifiée, elle renvoie 0🎜🎜🎜🎜 🎜public function index(){🎜🎜 $data = ['price'=>'68'];🎜🎜 $update = Db::table ('shop_goods')->where('id',8)- >update($data);🎜🎜 print_r($update);🎜🎜}🎜🎜🎜2. 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);🎜🎜 # Augmente la valeur du champ de 5🎜🎜 $inc = Db::table('shop_goods')-> où('id',6)->inc('stock',5) ->update();🎜🎜 print_r($inc);🎜🎜}🎜🎜🎜3. La méthode >dec décrémente la valeur d'un champ🎜🎜🎜🎜🎜 🎜public function index(){🎜🎜 # Soustraire 1 de la valeur du champ🎜🎜 $dec = Db::table('shop_goods')-> ;where('id',7)->dec('stock') ->update();🎜🎜 print_r($dec);🎜🎜 # Soustraire 5 de la valeur du champ $dec = Db::table( 'shop_goods')->where('id',8)- >dec('stock',5)->update();🎜

  print_r($dec);

}

7. Supprimer les données

1. La méthode Supprimer les données

  • delete renvoie le nombre de données affectées et renvoie 0 si elles ne sont pas supprimées. br/ >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);

    print_r($delete);

    # 删除整表数据

    $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(){

#Supprimer les données en fonction des conditions

$delete = Db::table('shop_goods')->where('id',1)-> delete() ;

print_r($delete);

# Supprimer les données avec la clé primaire 2

$delete = Db::table('shop_goods')->delete(2);

print_r($delete) ;

# Supprimez l'intégralité des données de la table

$delete = Db::table('shop_goods')->delete(true);

print_r($delete);

}

2. code>useSoftDelete< /code>

  • Il n'est pas recommandé de supprimer réellement les données des données professionnelles. Le système TP fournit un mécanisme de suppression logicielle

    🎜🎜🎜public function index(){🎜🎜​ # Soft delete🎜🎜.​ $delete = Db::table('shop_goods ')->useSoftDelete('status',3)->delete();🎜🎜 print_r($delete);🎜🎜}🎜🎜🎜8. auto-apprentissage) 🎜🎜🎜🎜save < La méthode /code> écrit les données de manière uniforme et détermine automatiquement s'il faut ajouter ou mettre à jour des données (en fonction de la présence ou non de données de clé primaire dans les données écrites). 🎜🎜🎜🎜🎜public function index(){🎜🎜 # Add data🎜🎜 $data = ['cat'=>'2','title'=>'Metersbonwe jean court pour femme été 2018 Nouveau taille moyenne style magasin de jeans slim délavés','price'=>'49.90','add_time'=>1576080000];🎜🎜 $save = Db::table('shop_goods')->save($data );🎜 🎜 print_r($save);🎜🎜 # Modifier les données🎜🎜 $data = ['price'=>'99.00','id'=>3];🎜🎜 $save = Db::table( 'shop_goods' )->save($data);🎜🎜 print_r($save);🎜🎜}🎜🎜🎜Remarque : l'ajout, la suppression, la vérification et la modification sont des opérations de routine🎜🎜9 L'ensemble de données🎜🎜🎜🎜Thinkphp fournit beaucoup de choses. de traitement des méthodes de jeu de données🎜
MéthodeDescription
toArray Convertir en tableau
isEmpty Est-il vide
tout Toutes les données
fusionner Fusionner d'autres données
diff Comparez les tableaux et retournez la différence
flip Échangez les clés et les valeurs​​dans les données
intersection Comparez les tableaux et retournez l'intersection
clés Retour tout dans les données Nom de la clé
popSupprimer le dernier élément des données
shift Supprimer le premier élément des données
unshiftInsérer un élément au début des données
push Insérer un élément à la fin
réduire En utilisant des fonctions définies par l'utilisateur, renvoyer le tableau sous forme de chaîne
reverse Réorganiser les données dans l'ordre inverse
chunk Les données sont séparées en plusieurs blocs de données
each Exécuter un rappel pour chaque élément des données
filtrer Utiliser la fonction de rappel pour filtrer les éléments dans la colonne de données
Renvoyer la colonne spécifiée dans les données
sort Data Tri
order Spécifiez le champ à trier
shuffle Mélanger les données
slice Intercepter une partie des données
map La fonction de rappel traite les éléments du tableau
where Filtre les éléments du tableau en fonction des conditions de champ
whereLike Like élément de filtre de requête
whereNotLike Pas comme l'élément de filtre
oùDans IN Interroge et filtre les éléments d'un tableau
whereNotIn Not IN interroge les éléments du tableau de filtres
whereBetween Between interroge les éléments du tableau de filtres
whereNotBetween Pas entre les requêtes les éléments du tableau de filtres

public function index(){

    $select = Db::table('shop_goods')->select();

    if($select->isEmpty()){

        echo '未找到数据';

    }

    print_r($select->toArray());

}

十、示例

controller代码

namespace appcontroller;

use thinkfacadeView ;

Index de classe{

    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' => $connexion,

            'gauche' => $gauche,

          'droite' => $right

        ]);

        return View::fetch();

    }

}

view代码: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>

                                                                                           <th>Titre du produit< ;/th> ;

                                                                             t;

                                                                                                                   

                                                                                                                "                                                                                       

                                                                                }<                                                                                                                                                                                                

                                                                                prix}</td>

($right_v.discount/10)}

                                                     {/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" /}