ThinkPHP6.0 데이터베이스




ThinkPHP6 데이터베이스

  • ThinkPHP6 데이터베이스와 모델 작업은 ThinkORM 라이브러리ThinkORM库

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

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

로 독립적이었습니다. Db 클래스를 사용하려면 Facade 메소드( thinkfacadeDb < /code>)

호출 데이터베이스 운영을 위한 통합 입구: Db::

1. 데이터베이스 관리 소프트웨어

1, phpMyAdmin(웹페이지 데이터베이스 관리)

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 '이름',

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


`add_time` int(10) unsigned NOT NULL COMMENT '시간 추가',

기본 키(`uid `)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='백엔드 관리자';

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

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 '범주 이름',


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

기본 키(`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, 'Maternity', 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 '제품 제목',🎜🎜 `price` double(10,2) unsigned NOT NULL COMMENT '가격',🎜🎜 ` 할인`tinyint(1) unsigned NOT NULL DEFAULT '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 '시간 추가',

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 메뉴 테이블

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 'Status 1 on 2 off',

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, 'User List', 4, 1);

INSERT INTO `shop_menu` VALUES (6, 'Shopping Cart', 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. 기본 MySql 실행

1 query 메서드는 MySql 쿼리 작업

query 方法用于执行 MySql 查询操作

public function index(){

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

    print_r($query);

}

2、execute

을 실행하는 데 사용됩니다. function index(){

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

print_r($query);

}

🎜🎜2、execute < /code>이 메소드는 MySql의 신규 및 수정된 작업을 수행하는 데 사용됩니다🎜🎜🎜public function index(){🎜🎜 $execute = Db::execute("INSERT INTO `shop_goods` VALUES (3, 1, '2019 가을 및 겨울) 새로운 패션 심플 퓨어 캐시미어 두꺼운 라운드 넥 캐시미어 롱 스커트, 여성용 슬림하고 우아한 드레스, 1179.00, 0, 200, 1, 1576080000)");🎜🎜                                                                                                                      두꺼운 라운드넥 슬림하고 우아한 여성용 드레스, 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을 반환하고, 그렇지 않으면 결과 배열을 반환합니다find 方法查询结果不存在,返回 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 함수 index(){


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

print_r($find);

🎜}🎜🎜🎜2. 다중 데이터 쿼리 select🎜🎜🎜🎜선택 메서드 쿼리 결과는 2차원 배열입니다. 결과가 없으면 빈 배열이 반환됩니다. 🎜🎜🎜🎜🎜public function index(){🎜🎜 $select = Db::table('shop_goods')- >select();🎜🎜 print_r ($select);🎜🎜}🎜🎜🎜3. 특정 필드의 값을 쿼리합니다. value🎜🎜🎜🎜value 메소드 쿼리 결과가 존재하지 않고 반환됩니다. null🎜🎜🎜🎜🎜공용 함수 인덱스() {🎜🎜🎜 $value = Db::table('shop_goods')->value('title');🎜🎜 print_r($value);🎜🎜}🎜🎜 🎜4. 열의 값을 쿼리합니다.🎜🎜 🎜🎜column 메서드 쿼리 결과가 존재하지 않고 빈 배열을 반환합니다.🎜🎜🎜🎜🎜public 함수 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🎜🎜🎜🎜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(){🎜🎜🎜​ $data = ['cat'=>'1','title'=>'니트 스웨터 드레스 2019 가을 그리고 겨울 신상 루즈 울 긴팔 여성용 미드 기장 캐주얼 밑단 스커트','price'=>'690.00', 'add_time'=>1576080000];🎜

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

print_r($insert);

}

3. 여러 데이터 조각 추가 insertAll

  • INSERTALL 성공적으로 추가된 번호를 반환하기 위한 데이터 추가 방법 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

공용 함수 인덱스() {

$ data = [

['cat' = & gt; 'title' > 'cat'=>'1','title'=>'2019 신상 가을 겨울 게으른 스타일 루즈한 스웨터 니트 드레스 레트로 홍콩 스타일 인터넷 연예인 투피스 세트','price'=> '408.00','add_time' =>1576080000],

['cat'=>'2','title'=>'남자긴팔티가을 라운드넥 흑백티셔츠 남성용 솔리드 컬러 상의 및 하의 셔츠','price'= >'99.00','add_time'=>1576080000]

];

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

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

6. 수정

🎜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 메소드는 필드의 값을 증가시킵니다🎜🎜🎜🎜 🎜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.decrement dec🎜🎜🎜🎜dec 메소드는 필드 값을 감소시킵니다🎜🎜🎜🎜🎜 🎜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();🎜< br/ >

공용 함수 인덱스(){

#조건에 따라 데이터 삭제

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

    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 # 기본 키가 2인 데이터 삭제

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

# 전체 테이블 데이터 삭제

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

print_r($delete);

}

2. code>useSoftDelete< /code>

비즈니스 데이터의 데이터를 실제로 삭제하는 것은 권장되지 않습니다. TP 시스템은 소프트 삭제 메커니즘을 제공합니다

공용 함수 index(){

​ # 소프트 삭제

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

    print_r($delete);
  • }

    🎜🎜8. 자율학습) 🎜🎜🎜🎜save < /code> 메소드는 데이터를 균일하게 쓰고 (쓴 데이터에 기본 키 데이터가 있는지 여부에 따라) 데이터 추가 또는 업데이트 여부를 자동으로 결정합니다. 🎜🎜🎜🎜🎜public function index(){🎜🎜 # 데이터 추가🎜🎜 $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는 많은 기능을 제공합니다. 데이터세트 방법 처리🎜
MethodDescription
toArray Convert to array
isEmpty 비어있나요
all 모든 데이터
merge 다른 데이터 병합
diff 배열을 비교하고 차이를 반환합니다.
flip 데이터의 키와 값을 교환합니다.
intersect 배열을 비교하고 교차점을 반환합니다.
반환 all in the data 키 이름
popDelete the last element in the data
shift Delete the first element in the data
unshift데이터의 시작 부분에 요소 삽입
push 끝에 요소 삽입
reduce 사용자 정의 함수를 사용하여 배열을 문자열로 반환
reverse 데이터를 역순으로 재정렬
청크 데이터가 여러 데이터 블록으로 분리됩니다
각각 데이터의 각 요소에 대해 콜백 실행
필터 콜백 함수를 사용하여 데이터
열의 요소를 필터링합니다. 데이터의 지정된 열을 반환
sort Data Sort
order 정렬할 필드 지정
shuffle Shuffle the data
slice 데이터 일부 차단
map 콜백 함수 배열의 요소를 처리합니다
where 필드 조건에 따라 배열의 요소를 필터링합니다.
whereLike Like 쿼리 필터 요소
whereNotLike Not Like 필터 요소
어디에서 IN 배열의 요소 쿼리 및 필터링
whereNotIn Not IN 배열의 요소 쿼리 및 필터링
whereBetween Between 배열의 요소 쿼리 및 필터링
whereNotBetween 아니요 쿼리와 필터 사이에서 배열의 요소

공용 함수 인덱스(){

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

    if($select->isEmpty()){

        echo '未找到数据';

    }

    print_r($select->toArray());

}

十、示例

controller代码

namespace appcontroller;

use think FacadeView;

클래스 인덱스{

ㅋㅋㅋ )->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::ass([

            'title'  => $title,

            '로그인' => $login,

            '왼쪽' => $left,

            '오른쪽' => $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>商product列表< ;/span>

        <button class="layui-btnlayui-btn-sm" onclick="add()">添加</button>

        <div></div>

    < ;/div>

                                                                       

              <번째>제품명< ;/th> ;

                                                                 t;

                 > `` ~ > ~ ~                                 가격}</td>

($right_v.discount/10)}

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

        & lt;/tbody>

    </table>

</div>

{include file="public/bottom" /}