亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

ThinkPHP 配置數據庫

1. 前言

本小節介紹如何設計數據表,合理地選擇數據字段,建立好數據表之后,就可以在 ThinkPHP 中的配置文件填寫相應的數據庫信息。

php 使用傳統的方式去連接數據庫一般步驟會比較繁瑣,如使用 mysqli 去連接 mysql 就需要進行一系列復雜的代碼操作,這樣對初學者來說不是很友好。所以 ThinkPHP 框架對這一系列的數據庫連接和執行操作進行了封裝,使用 ThinkPHP 框架提供的這些方法基本能滿足大多數數據庫 增刪改查 操作,和其他一些比較常見的數據庫操作 。

2. 新建數據庫和數據表

這里學習下如何設計學生課程相關數據表,其中包括學生信息 student,教師信息表 teacher,學科表 course,學生選課表 student_course,合理選擇字段類型。接下來可以新建一個屬于自己項目的數據庫:

 命令 : CREATE DATABASE item_name;

執行命令如圖所示:

圖片描述

3. 新建學生信息表 student

3.1 確定字段

字段名稱 含義
id 自增主鍵
name 學生姓名
age 學生年齡
id_number 身份證號
created_at 創建數據時的時間戳
update_at 更新數據時的時間戳
status 狀態 1-正常 2-刪除

學生信息表包含的字段可以有很多,本小節選擇學生姓名、年齡、身份證號介紹字段的選擇,字段的確定是根據實際業務需求來新增或減少的,例如想要存儲學生籍貫信息可新增 “address” 字段。

3.2 選擇字段的數據類型

字段名稱 數據類型
id 無符號整型(UNSIGNED INT)
name VARCHAR(50)
age UNSIGNED INT
id_number VARCHAR(18)
created_at INT(10)
update_at INT(10)
status TINYINT(1)

Tips:實際業務中一般要將年齡字段設置為可變,通常會使用時間戳(距離1970-01-01 00:00:00的秒數)來表示年齡相關的信息,在這里為了方便演示直接使用了 UNSIGNED INT。

一般來說姓名字段的長度為 2-4 個字符,但是考慮到少數民族的學生姓名比較長,所以將姓名字段的長度設置為 50,適當的給的大一點。身份證號同樣使用字符串類型來存儲,因為有的身份證號中有字母。身份證的長度統一都是 18 位不變,直接在這里寫死就好。

3.3 新建數據表

命令 : 
CREATE TABLE `student` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '無名',
  `age` int(10) unsigned NOT NULL DEFAULT '0',
  `id_number` varchar(18) NOT NULL DEFAULT '',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '創建時間',
  `update_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '狀態 1-正常 2-刪除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Tips:其中 “student” 為表名稱,“id”、“name”、“age”、“id_number” 為字段名稱,跟在字段名稱后面的是字段的數據類型,“UNSIGNED” 表示無符號,“AUTO_INCREMENT” 表示自增,"PRIMARY KEY (`id`)"表示設置 “id” 為業務主鍵,,"NOT NULL DEFAULT ‘無名’ " 表示默認不為空,且默認值為 “無名” 。

執行結果如下圖:

圖片描述
查看當前數據庫中所有的數據表:

命令:show tables

可以看到 item_name 數據庫中已經有了 student 這張數據表。

4. 新建教師信息表 teacher

4.1 確定字段

字段名稱 含義
id 自增主鍵
name 教師姓名
age 教師年齡
id_number 身份證號
created_at 創建數據時的時間戳
update_at 更新數據時的時間戳
status 狀態 1-正常 2-刪除

同樣教師信息的字段可選擇也很多,這里選擇教師姓名、教師年齡、教師身份證號,可自行選擇感興趣的字段,并參照新建學生表的步驟選擇字段,如教師郵箱、教師博客地址。

4.2 選擇字段的數據類型

字段名稱 數據類型
id 無符號整型(UNSIGNED INT)
name VARCHAR(50)
age UNSIGNED INT
id_number VARCHAR(18)
created_at INT(10)
update_at INT(10)
status TINYINT(1)

4.3 新建數據表

命令 : 
CREATE TABLE `teacher` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '教師名',
  `age` int(10) unsigned NOT NULL DEFAULT '0',
  `id_number` varchar(18) NOT NULL DEFAULT '',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '創建時間',
  `update_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '狀態 1-正常 2-刪除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Tips: 其中 “teacher” 為表名稱,“id”、“name”、“age”、“id_number” 為字段名稱,跟在字段名稱后面的是字段的數據類型,“UNSIGNED” 表示無符號,“AUTO_INCREMENT” 表示自增,“PRIMARY KEY (`id`)” 表示設置 “id” 為業務主鍵,"NOT NULL DEFAULT 教師名’ "表示默認不為空,且默認值為 “教師名” 。

執行結果如下圖:

圖片描述

Tips: 這里展示了使用 Navicat 來執行 sql 語句,選擇數據庫只需點擊相應的數據庫名稱,然后選擇新建查詢即可。

5. 新建課程表 course

5.1 確定字段

字段名稱 含義
id 自增主鍵
course_name 課程名稱
teacher_id 教師id
created_at 創建數據時的時間戳
update_at 更新數據時的時間戳
status 狀態 1-正常 2-刪除

5.2 選擇字段的數據類型

字段名稱 數據類型
id 無符號整型(UNSIGNED INT)
course_name VARCHAR(50)
teacher_id 無符號整型(UNSIGNED INT)
created_at INT(10)
update_at INT(10)
status TINYINT(1)

5.3 新建數據表

命令 : 
CREATE TABLE `course` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `course_name` varchar(50) NOT NULL DEFAULT '',
  `teacher_id` int(10) unsigned NOT NULL DEFAULT '0',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '創建時間',
  `update_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
  `status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '狀態 1-正常 2-刪除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

執行結果如下圖:

圖片描述

6. 新建學生選課關聯表 student_course

6.1 確定字段

字段名稱 含義
id 自增主鍵
student_id 學生id
course_id 課程id
created_at INT(10)

6.2 選擇字段的數據類型

字段名稱 數據類型
id 無符號整型(UNSIGNED INT)
student_id 無符號整型(UNSIGNED INT)
course_id 無符號整型(UNSIGNED INT)
created_at INT(10)

6.3 新建數據表

命令 : 
CREATE TABLE `student_course` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `student_id` int(10) unsigned NOT NULL DEFAULT '0',
  `course_id` int(10) unsigned NOT NULL DEFAULT '0',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '創建時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

執行結果如下圖:

圖片描述

7. 配置數據庫信息

下面打開 config\database.php 文件,可以看到文件內容:

<?php

return [
    // 默認使用的數據庫連接配置
    'default'         => env('database.driver', 'mysql'),

    // 自定義時間查詢規則
    'time_query_rule' => [],

    // 自動寫入時間戳字段
    // true為自動識別類型 false關閉
    // 字符串則明確指定時間字段類型 支持 int timestamp datetime date
    'auto_timestamp'  => true,

    // 時間字段取出后的默認時間格式
    'datetime_format' => 'Y-m-d H:i:s',

    // 數據庫連接配置信息
    'connections'     => [
        'mysql' => [
            // 數據庫類型
            'type'            => env('database.type', 'mysql'),
            // 服務器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 數據庫名
            'database'        => env('database.database', ''),
            // 用戶名
            'username'        => env('database.username', 'root'),
            // 密碼
            'password'        => env('database.password', ''),
            // 端口
            'hostport'        => env('database.hostport', '3306'),
            // 數據庫連接參數
            'params'          => [],
            // 數據庫編碼默認采用utf8
            'charset'         => env('database.charset', 'utf8'),
            // 數據庫表前綴
            'prefix'          => env('database.prefix', ''),

            // 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器)
            'deploy'          => 0,
            // 數據庫讀寫是否分離 主從式有效
            'rw_separate'     => false,
            // 讀寫分離后 主服務器數量
            'master_num'      => 1,
            // 指定從服務器序號
            'slave_no'        => '',
            // 是否嚴格檢查字段是否存在
            'fields_strict'   => true,
            // 是否需要斷線重連
            'break_reconnect' => false,
            // 監聽SQL
            'trigger_sql'     => env('app_debug', true),
            // 開啟字段緩存
            'fields_cache'    => false,
        ],

        // 更多的數據庫配置信息
    ],
];

上面是一些數據庫的配置,主要的參數配置都會讀取 .env 文件,配置下面的數據庫參數:
圖片描述

8. 小結

本小節介紹了相關數據庫表的設計,對表中沒一個字段的定義過程進行了說明,新建好數據庫后就可以在 config\database.php 文件中配置全局數據庫連接配置,需要注意的是,也可以配置屬于自己模塊的配置,該模塊單獨連接另外數據庫,配置連接好數據庫之后就能對數據庫進行增刪改查操作了。

Tips: 代碼倉庫:https://gitee.com/love-for-poetry/tp6