ThinkPHP6.0データベース
- ##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',DROP TABLE IF EXISTS `shop_cat`;CREATE TABLE `shop_cat` (`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. 製品分類テーブル
CREATE TABLE `shop_goods` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ' 製品 ID',`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. 製品リスト
4. メニューテーブル`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);
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 メソッドが使用されます
execute$ query = Db::query("SELECT * FROM `shop_goods` where status=1");
print_r($query);
}
2 ,
メソッドは、MySql の新規および変更された操作を実行するために使用されます
$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. 特定の列の値をクエリします。
- #列
- メソッドのクエリ結果は存在せず、空の配列を返します
1. データの追加挿入$column = Db::table('shop_goods')->column('title');
print_r($column); $column = Db::table ('shop_goods')->column('title','id') ; print_r($column);}5. 追加
- insert
- メソッドはデータを正常に追加し、正常に追加された項目の数を返します。通常は 1 を返します。
$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
メソッドはデータを正常に追加し、正常に追加された部分の数を返します
$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 を返します。修正済み
$data = ['price'=>'68'];
$ update = Db::table('shop_goods')->where('id',8)-> ;update($data);
print_r($update);
}
2, self-increment inc
- inc
フィールドの値をインクリメントするメソッド
$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
フィールドの値をデクリメントするメソッド
#フィールドの値から 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(){2. ソフト削除# を返します。
条件に基づいてデータを削除します $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);}
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];注: 追加、削除、確認、変更は日常的な操作です9. データ セット$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);}
- Thinkphp はデータセットを処理するための多くのメソッドを提供します
配列を比較し、交差を返します | |
##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" /}