ThinkPHP6.0データベース




##ThinkPHP6 データベース

    ##ThinkPHP6 データベースとモデルの操作は # # では独立しています。 #ThinkORM ライブラリ
  • Db クラスを使用するには、ファサード メソッド (
  • think\facade\Db
  • ) を使用して

    ## を呼び出す必要があります。 #データベース操作の統合入口:

    Db::
  • 1. データベース管理ソフトウェア

  • 1、phpMyAdmin (Webページ データベース管理)

2、Navicat for MySql (Windows ソフトウェア データベース管理)

2. データベースの作成

1、管理者テーブル

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 'Password',

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

`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='バックエンド管理者';

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


2. 製品分類テーブル

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 'カテゴリ名' ,

`ステータス` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'ステータス 1 オン 2 オフ',

主キー (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='分類テーブル';

#INSERT INTO `shop_cat` VALUES (1, '婦人服', 1) ;


INSERT INTO `shop_cat` 値 (2, '紳士服', 1);

INSERT INTO `shop_cat` 値 (3, 'マタニティ', 1);

INSERT INTO `shop_cat` VALUES (4, '子供服', 1);

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

INSERT INTO ` shop_cat` VALUES ( 6, '携帯電話', 1);

INSERT INTO `shop_cat` VALUES (7, 'コンピューター', 1);

3. 製品リスト

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 '製品タイトル',

`価格` double(10,2) unsigned NOT NULL コメント '価格 ',

`割引` tinyint(1) unsigned NOT NULL デフォルト '0' COMMENT '割引',

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

`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT 'ステータス 1 オン 2 オフ 3削除',

`add_time` int(10) unsigned NOT NULL COMMENT '時間の追加',

主キー (`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. メニューテーブル

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, 'Order Management', 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ネイティブ MySql

1 を実行します。MySql クエリ操作の実行には

query

メソッドが使用されます

public functionindex(){

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

print_r($query);

}

2 ,
execute

メソッドは、MySql の新規および変更された操作を実行するために使用されます

public functionindex(){

$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. クエリ

1. 単一データ クエリ find

  • find メソッドのクエリ結果は、存在する場合は null を返し、それ以外の場合は結果の配列を返します。

public functionindex(){

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

print_r($find);

}

2. 複数のデータ クエリ select

  • select メソッドのクエリ結果は 2 次元配列です。結果が存在しない場合は、空の配列が返されます。

public functionindex(){

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

print_r($select);

}

3. 特定のフィールドの値をクエリする value

  • value メソッドのクエリ結果が存在せず、 null を返します

public functionindex(){

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

print_r($ value);

}

4. 特定の列の値をクエリします。

    #列
  • メソッドのクエリ結果は存在せず、空の配列を返します

  • パブリック関数 Index(){

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

print_r($column);

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

print_r($column);

}

5. 追加

1. データの追加挿入

    insert
  • メソッドはデータを正常に追加し、正常に追加された項目の数を返します。通常は 1 を返します。


  • パブリック関数 Index( ){

$data = ['cat'=>'1','title' =>'日本のロマンチックで暖かいウールニットスプライシングメッシュプリーツミッドレングスウエストドレス' ,'price'=>'1598.35','add_time'=>1576080000];

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

print_r($insert);

}

2. を追加します。 data insertGetId

    insertGetId
  • このメソッドはデータを正常に追加し、追加されたデータの自動インクリメントされた主キーを返します


  • public functionindex(){

$data = ['cat '=>'1','title'=>'ニットセーターワンピース2019秋冬新作女性用スタイルルーズウール長袖ミドル丈カジュアルボトムスカート','price'=>'690.00','add_time'=>1576080000];

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

print_r($insert);

}

3. 複数のデータを追加します insertAll

  • #insertAll メソッドはデータを正常に追加し、正常に追加された部分の数を返します

#パブリック関数 Index(){


$data = [

] ['cat'=>'1','title' =>'女性用秋と冬の厚みのあるドレス、エクストラロングルーズカシミアセーター、タートルネックプルオーバー、オーバーザニーセーター、多用途ニットロングスカート','price'=>'658.00','add_time'=> 1576080000],

[' cat'=>'1','title'=>'2019秋冬新作レイジースタイルルーズセーターニットドレスレトロ香港スタイルネットセレブ2点セット', 'price'=>'408.00','add_time'= >1576080000],

['cat'=>'2','title'=>'メンズ長袖Tシャツ秋のラウンドネック黒と白の T シャツ T 無地トップスとボトムス シャツ メンズ','price'=>'99.00','add_time'=>1576080000]

];

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

print_r($insert);

}

6. 変更

1. データの変更 update

  • update

    メソッドは影響を受けるデータの数を返し、データがない場合は 0 を返します。修正済み

パブリック関数index(){

$data = ['price'=>'68'];

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

print_r($update);

}

2, self-increment inc

  • inc

    フィールドの値をインクリメントするメソッド

パブリック関数 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. Decrement dec

  • dec

    フィールドの値をデクリメントするメソッド

public functionindex(){

#フィールドの値から 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. 削除

1. データの削除 delete

  • delete メソッドは影響を受けるデータの数を返します。削除されていない場合は 0

#public functionindex(){

# を返します。

条件に基づいてデータを削除します

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

# ソフト削除

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

print_r($delete);

}

8. その他の操作(自習)

  • save データを一律に書き込み、追加するか追加するかを自動的に判断するメソッドです。データを更新する(書き込まれたデータに主キーがあるかどうかをデータに基づいて判断する)。

public functionindex(){

# データの追加

$data = ['cat'=>'2', 'title'=>'Metersbonwe スリークォーター ジーンズ レディース 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);

}

注: 追加、削除、確認、変更は日常的な操作です

9. データ セット

  • Thinkphp はデータセットを処理するための多くのメソッドを提供します

#メソッド説明toArray 配列に変換isEmpty 空ですか?すべて すべてのデータmerge 他のデータをマージしますdiff 配列を比較し、差分セットを返します 反転 データ内のキーと値を交換します##intersect # キー データ内のすべてのキー名を返しますpopデータ内の最後の要素を削除しますshift データの最初の要素を削除しますunshiftデータの先頭に要素を挿入しますdatapush 最後に要素を挿入配列をユーザー定義関数を使用した文字列データを逆順に並べ替えます #データは複数のデータ チャンクに分割されます
配列を比較し、交差を返します
##reduce
reverse
chunk
each データの各要素に対してコールバックを実行します。
filter コールバック関数を使用して、データの要素をフィルタリングします。データ
column データ内の指定された列を返します
sort データを並べ替えます
order フィールドの並べ替えを指定
shuffle データをシャッフルする
slice データの一部をインターセプト
map コールバック関数を使用して配列内の要素を処理
where フィールド条件に基づいて配列内の要素をフィルタリングする
whereLike Like クエリ フィルタ要素
whereNotLike Not Like フィルター要素
whereIn IN フィルター配列内のクエリ要素
whereNotIn Not IN フィルター配列内の要素をクエリします。
whereBetween Between 要素をクエリします。フィルタ配列内
whereNotBetween クエリフィルタ配列内の要素の間ではありません

public functionindex(){

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

if($select ->isEmpty()){

echo '未到達データ';

}

print_r($select->toArray());

}

十、例

controller代番号

namespace app\controller;

use think\facade\View;

class Index{

public functionindex(){

$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,

'ログイン' => $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-btnlayui-btn-sm" onclick="add()">追加</button>

<div></div>

</div>

#;/th&gt;

#/th&gt;

;

&lt;/tr&gt;

& LT;/Thead & GT;

## & LT;

## {ボリスト名 = "right" id = "right_v" }

}< /td>

##

right_v.price*($ 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-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/bottom" /}