ThinkPHP6.0-Datenbank




ThinkPHP6-Datenbank

  • ThinkPHP6 Datenbank- und Modelloperationen waren unabhängig, da ThinkORM库

  • Um die Db-Klasse zu verwenden, müssen Sie die Fassadenmethode (thinkfacadeDb ) verwenden, um

  • < aufzurufen 🎜>
  • Datenbankbetrieb Einheitlicher Zugang:

    Db::

1. Datenbankverwaltungssoftware

1, phpMyAdmin (Webseiten-Datenbankverwaltung)

2, Navicat für MySql (Windows-Software-Datenbankverwaltung)

2. Datenbank erstellen

1. Administratortabelle

TABELLE „shop_admin“ erstellen (

` uid ` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Benutzer-ID',

`Konto` varchar(50) NICHT NULL KOMMENTAR 'Konto',

`Passwort` char(32) NICHT NULL KOMMENTAR 'Passwort',

`name` varchar(50) KEIN NULL-KOMMENTAR 'Name',

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

`add_time` int(10) unsigned NOT NULL COMMENT 'Zeit hinzufügen',

PRIMÄRSCHLÜSSEL (`uid`)

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


INSERT INTO `shop_admin` VALUES (1, 'ouyangke', 'e10adc3949ba59abbe56e057f20f883e', 'Ouyang Ke', 1, 1576080000);

2. Produktklassifizierungstabelle

TROPFEN-TABELLE, WENN EXISTIERT `shop_cat`;

CREATE TABLE `shop_cat` (

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

`name` varchar(50 ) KEIN NULL-KOMMENTAR 'Kategoriename',

`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'Status 1 an und 2 aus',

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='Klassifizierungstabelle';


INSERT INTO `shop_cat` VALUES (1, 'Damenbekleidung', 1);

INSERT INTO ` shop_cat` VALUES (2, 'Herrenbekleidung', 1);

INSERT INTO `shop_cat` VALUES (3, 'Maternity', 1);

INSERT INTO `shop_cat` VALUES (4, 'Children's Clothing', 1);

INSERT INTO `shop_cat` VALUES (5, 'TV', 1);

INSERT INTO `shop_cat` VALUES (6, 'Mobile phone', 1);

INSERT INTO `shop_cat` VALUES (7, 'Computer', 1);

3. Produkttabelle

CREATE TABLE `shop_goods` (

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

`cat` int(10) unsigned NOT NULL DEFAULT '1' COMMENT 'Category ID',

`title` varchar(200) NOT NULL COMMENT 'Product title',

`price` double(10,2) unsigned NOT NULL COMMENT 'Preis',

`Rabatt` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT 'Rabatt',

`stock` int(10) unsigned NOT NULL DEFAULT '1' COMMENT 'Stock',

`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'Status 1 auf 2 aus 3 Löschen',

`add_time` int(10) unsigned NOT NULL COMMENT 'Zeit hinzufügen',

PRIMARY KEY (`id`)

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


INSERT INTO `shop_goods` VALUES (1, 1, 'Wolkenartiger leichter Feenrock, hochwertiger, perlenbesetzter langer Rock in der Taille, elegant ärmelloses Kleid', 279,99, 0, 1100, 1, 1576080000);

INSERT INTO `shop_goods` VALUES (2, 1, „High-cold Royal Sister Style Cord-A-Linien-Kleid für Damen im Herbst und Winter 2019, neuer Taillen-Schlankheits-Retro-Rock“, 255,90, 0, 100, 1, 1576080000);

4. Menütabelle

CREATE TABLE `shop_menu` (

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

`title` varchar(50) NOT NULL COMMENT 'Menüname',

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

`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'Status 1 ist aktiviert 2Close',

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COMMENT='Linke Menütabelle';


EINFÜGEN IN `shop_menu` VALUES (1, 'Product Management', 0, 1);

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

INSERT INTO `shop_menu` VALUES (3, 'Produktkategorie', 1, 1);

INSERT INTO `shop_menu` VALUES (4, 'User Management', 0, 1);

INSERT INTO `shop_menu` VALUES (5, 'User List', 4, 1);

INSERT INTO `shop_menu` VALUES (6, 'Warenkorb', 4, 1);

INSERT INTO `shop_menu` VALUES (7, 'User address', 4, 1);

INSERT INTO `shop_menu` VALUES (8, 'Auftragsverwaltung', 4, 1);

INSERT INTO `shop_menu` VALUES (9, 'Backend-Verwaltung', 0, 1);

INSERT INTO `shop_menu` VALUES (10, 'Administrator list', 9, 1);

INSERT INTO `shop_menu ` WERTE (11, 'Persönliches Zentrum', 9, 1);

INSERT INTO `shop_menu` VALUES (12, 'Linkes Menü', 9, 1);

3. Natives MySql ausführen

1. Die Methode query wird zum Ausführen der MySql-Abfrage verwendet Operationen

öffentliche Funktion index(){

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

print_r($query);

}

2. Zur Ausführung wird die Methode execute verwendet MySql neue und geänderte Operationen

public function index(){

$execute = Db::execute("INSERT INTO `shop_goods` VALUES (3, 1, '2019 Autumn and Winter Neues modisches und einfaches reines Kaschmir-verdicktes Rundhals-Kaschmir-Langrock, schlankes und elegantes Kleid für Damen, 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. Abfrage

1 🎜>Das Ergebnis der Methodenabfrage existiert nicht, kehren Sie zurück null, andernfalls wird das Ergebnisarray zurückgegeben

  • find public function index(){

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

print_r($find);

}

2. Mehrfache Datenabfrage Das Abfrageergebnis der Methode select

ist ein zweidimensionales Array. Wenn das Ergebnis nicht vorhanden ist, wird ein leeres Array zurückgegeben 🎜>

public function index(){
  • $select = Db::table('shop_goods')->select();

    select print_r($select);

  • }

3. Fragen Sie ein bestimmtes Feld ab Wert Wert

Ergebnis der Methodenabfrage existiert nicht, Rückgabe null

public function index(){
  • $value = Db::table('shop_goods')->value('title');value

    print_r($value);
}


4. Abfrage Wert einer Spalte Spalte

Methodenabfrageergebnis existiert nicht und gibt ein leeres Array zurück

öffentlicher Funktionsindex(){
  • $column = Db::table('shop_goods')->column('title');column

    print_r($column);
$column = Db::table('shop_goods')- >column('title','id');

print_r($column);

}

5. Fügen Sie einen Dateneinschub hinzu

Wenn die Methode erfolgreich Daten hinzufügt, gibt sie die Anzahl der erfolgreich hinzugefügten Elemente zurück 1

public function index(){

  • $data = ['cat'=>'1','title'=>'Japanisches romantisches und warmes Wollstrick-Spleißnetz-Faltenkleid mit mittlerer Taille','price'=>'1598.35','add_time' => 1576080000];

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

    print_r($insert);
}


2. Fügen Sie a hinzu Daten Die Methode insertGetId

fügt Daten erfolgreich hinzu und gibt den automatisch inkrementierten Primärschlüssel der hinzugefügten Daten zurück

public function index() {

  • $data = ['cat'=>'1','title'=>'Strickpulloverkleid 2019 Herbst und Winter im neuen Stil, lose Wolle, langärmeliger, mittellanger, lässiger Rock für Damen','price'=>'690,00 ',' add_time'=>1576080000];

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

    print_r($insert);

    }

    3. Fügen Sie mehrere Daten hinzu Die Methode insertAll

    • insertAll fügt erfolgreich Daten hinzu und gibt die Anzahl der erfolgreich hinzugefügten Elemente zurück

    öffentlicher Funktionsindex (){

    $data = [

    ['cat'=>'1','title'=>'Herbst- und Winterverdicktes Kleid für Damen, extra langer, lockerer Kaschmirpullover, Rollkragenpullover, Overknee-Pullover, vielseitiger gestrickter langer Rock','Preis '=>'658.00 ','add_time'=>1576080000],

    ['cat'=>'1','title'=>'2019 Neue Herbst und Winter Lazy Style Lose Pullover Strickkleid Retro Hong Kong Stil Internet Celebrity Zwei-stück Set','price'=>'408,00' ,'add_time '=>1576080000],

    ['cat'=>'2','title'=>'Herren langärmeliges T-Shirt Herbst Rundhals schwarz-weißes T-Shirt T einfarbiges Ober- und Unterhemd Herren','price'=> '99.00','add_time '=>1576080000]

    ];

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

    print_r($insert);

    }

    6. Änderung

    1. Daten ändern Die Methode „update“ gibt die Anzahl der betroffenen Daten zurück. Wenn keine Daten geändert werden, wird „0“ zurückgegeben Funktion index() {

      $data = ['price'=>'68'];
    • $update = Db::table('shop_goods')->where('id',8)->update($data); update

      print_r($update);
    }

    2. Die Methode increment inc

    erhöht den Wert eines Feldes

    öffentliche Veranstaltung index(){

      $inc = Db::table('shop_goods')->where('id',5)->inc('stock')->update();
    • print_r($inc);inc

      # Der Wert des Feldes erhöht sich um 5
    $inc = Db::table('shop_goods')->where('id',6)->inc('stock',5)-> ;update( );

    print_r($inc);

    }

    3 Die Methode dec

    dekrementiert den Wert eines Feldes

    public function index(){
    • # Subtrahiere 1 vom Feldwert

      dec $dec = Db::table('shop_goods')->where('id',7)->dec('stock')->update();

      print_r($dec) ;
    # Subtrahiere 5 vom Feldwert

    $dec = Db::table('shop_goods')->where('id',8)->dec('stock',5)->update();

    print_r($dec);

    }

    7. Daten löschen löschen

    • Methode gibt die Anzahl der betroffenen Daten zurück, es wird keine Löschung zurückgegeben 0

      delete

    public function index(){

    # Daten basierend auf Bedingungen löschen

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

    print_r($delete);

    # Löschen Sie den Primärschlüssel als 2 Daten

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

    print_r($delete);

    # Die gesamten Tabellendaten löschen

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

    print_r($delete);

    }

    2

    useSoftDelete

      Es wird nicht empfohlen, Daten für Geschäftsdaten tatsächlich zu löschen. Das TP-System bietet einen sanften Löschmechanismus
    public function index() {

    # Soft delete

    $delete = Db::table('shop_goods')->useSoftDelete('status',3)->delete();

    print_r($delete);

    }

    8. Andere Operationen (Selbststudium) Die Methode

    • schreibt Daten einheitlich, Bestimmen Sie automatisch, ob Daten hinzugefügt oder aktualisiert werden sollen (basierend darauf, ob die geschriebenen Daten Primärschlüsseldaten enthalten).

      save

    public function index(){

    # Daten hinzufügen

    $data = ['cat'=>'2','title'=>'Metersbonwe Drei-Punkt-Jeans Damen 2018 Sommer neue Slim-Fit-Jeans mit mittlerer Taille und gewaschenem Einkaufszentrum-Stil','price'=>'49,90', ' add_time'=>1576080000];

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

    print_r($save);

    # Daten ändern

    $data = ['price'=>'99.00','id'=>3];

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

    print_r($save);

    }

    Hinweis: Hinzufügen, Löschen, Überprüfen und Ändern sind Routinevorgänge

    9. Datensatz

      Thinkphp bietet viele Methoden zur Verarbeitung von Datensätzen
    Nicht Zwischen der Abfrage werden die Elemente im Array gefiltert

    public function index(){

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

        if($select ->isEmpty()){

            echo '未找到数据';

        }

       print_r($select->toArray());

    }

    十、示例

    controller代码

    namespace appcontroller ;

    verwenden thinkfacadeView;

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

            }

            Anzeigen ::assign([

                'title'  => $title,

                'login' => $login,

                'left' => $left,

                'right' => $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>ID</th>

                                                                                            <th>Kategorie</th>

                                                                                      <th>Rabatt</th>

                                                                                      <th>Inventar</th>

                                                                 <th>Hinzufügen. Zeit</th>

                                                               </thead>

                                                                                                         <tr>

                                                                                                <td>{$right_v.title}</td>

                                                                                       <td>{$right_v.price}</td>

                                                                                      <td>

                                                                                  {$right_v.price*($right_v.discount/10)}

                                                                                                               {$right_v.price}

                                                                                             

                        </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>

                            <Schaltfläche class="layui-btnlayui-btn-xs" onclick="edit()">编辑</button>

                            <button class="layui-btnlayui-btn-dangerlayui-btn -xs" onclick="del()">删除</button>

                        </td>

                    </tr>

               {/volist}

            </tbody>

        </table>

    </div>

    {include file="public/ unten" /}




    MethodeBeschreibung
    toArray In Array konvertieren
    isEmpty Ob es leer ist
    alle Alle Daten
    zusammenführen Andere Daten zusammenführen
    diff Arrays vergleichen und den Differenzsatz zurückgeben
    flip Tauschen Sie die Schlüssel und Werte in den Daten aus
    Schnittmenge Vergleichen Sie die Arrays und geben Sie die Schnittmenge zurück
    Schlüssel Alle Schlüsselnamen in den Daten zurückgeben
    popDas letzte Element in den Daten löschen
    shift Löschen Sie das erste Element in den Daten
    unshiftFügen Sie ein Element am Anfang der Daten ein
    drücken Ein Element am Ende einfügen
    reduzieren Das Array mithilfe einer benutzerdefinierten Funktion als Zeichenfolge zurückgeben
    Umkehren Daten in umgekehrter Reihenfolge anordnen
    Chunk Daten werden in mehrere Datenblöcke aufgeteilt
    jeder Rückruf für jedes Element der Daten ausführen
    Filter r Rückruffunktion verwenden, um Elemente in Daten zu filtern
    Spalte Gibt die angegebene Spalte in den Daten zurück
    sortieren Sortieren Sie die Daten
    Reihenfolge Feldreihenfolge angeben
    Mischen Daten desorganisieren
    Slice Einen Teil der Daten abfangen
    map Rückruffunktion verwenden, um Elemente im Array zu verarbeiten
    wo Filterelemente im Array basierend auf Feldbedingungen
    whereLike Like-Abfragefilterelemente
    whereNotLike Nicht Wie Filterelement
    whereIn IN Abfrageelement im Filterarray
    whereNotIn Nicht IN fragt die Elemente im Filterarray
    whereBetween Between fragt die Elemente im Filterarray
    whereNotBetween <🎜 ab >