第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

ThinkPHP 數(shù)據(jù)庫操作

1. 前言

本小節(jié)介紹如何使用 ThinkPHP 框架對數(shù)據(jù)庫進(jìn)行增刪該查操作,并且實現(xiàn)幾個和學(xué)生信息表相關(guān)的接口來加深對路由 POST、GET、DELETE、PUT 的理解。

MySQL 中的 select、deleteupdate、insert 就分別對應(yīng)著 ThinkPHP 中的 select()、delete()、update()insert() 方法,使用者只需要按照某種規(guī)范和格式書寫代碼,框架底層會自動幫你生成對應(yīng)的 SQL 語句然后交給 MySQL 這樣的數(shù)據(jù)庫執(zhí)行并返回結(jié)果。

2. 新建數(shù)據(jù)模型

首先在 app 目錄下新建一個 Models 目錄,然后在 Models 目錄下新建一個 Study 目錄,在 Study 目錄新建模型 CourseModel、StudentModelTeacherModel、StudentCourseModel,新建 CourseModel模型如下圖所示:
圖片描述

Tips: 模型類需要繼承 think\Model 類,$table = 'course' 表示該模型表名 course,可以按照上面的方法新建其他幾個模型。

3. 添加學(xué)生數(shù)據(jù)接口

3.1 定義路由

首先在 study.php 路由文件添加 POST 路由如下圖所示:
圖片描述

Tips: post 表示添加數(shù)據(jù),客戶端調(diào)用該接口必須使用 POST 請求方式,路由指向的控制器是 app\controller\Study\StudentController,方法名是 addStudent()

3.2 新建控制器

接下來在 app\controller\Study\ 目錄中添加 StudentController 控制器如下圖所示:
圖片描述

3.3 定義路由指向的方法

下面定義一下路由里面指向的 addStudent() 方法,方法如下:

<?php
namespace app\controller\Study;
use app\BaseController;
use app\Models\Study\StudentModel;

class StudentController extends BaseController
{
    /**
     * 添加學(xué)生接口
     */
    public function addStudent()
    {
        //接收請求過來的姓名字段
        $name = (string)$this->request->param('name');
        //接收請求過來的年齡字段
        $age = (int)$this->request->param('age');
        //接口請求過來的身份證字段
        $id_number = (string)$this->request->param('id_number');

        try {
            $student = new StudentModel();
            $student->name = $name;
            $student->age = $age;
            $student->id_number = $id_number;
            $student->created_at = time(); //時間戳,表示數(shù)據(jù)入庫時間
            $student->status = 1;
            $student->save();
        } catch (\Exception $exception) {
            return json("學(xué)生數(shù)據(jù)入庫失敗" . $exception->getMessage(), 404);
        }
        return json("添加成功");
    }
}

Tips: 其中 $student = new StudentModel() 表示實例化 StudentModel 模型類,然后給這個模型類的屬性賦值,使用模型類的 save() 方法就可以向 student 表添加數(shù)據(jù)了,注意實例化模型類之后給模型對象屬性賦值需要和數(shù)據(jù)庫字段保持一致。

3.4 請求接口添加學(xué)生數(shù)據(jù)

如下圖所示,可以在 postman 請求上述定義好的學(xué)生添加接口,并且?guī)闲枰砑拥膮?shù)字段,字段名需要個上面接收的一致:

{
    "name" : "愛因詩賢",
    "age" : 18,
    "id_number" : "42011720100512065X"
}

請求如下圖所示:
圖片描述
添加成功之后就可以在數(shù)據(jù)庫表中查看到新增的學(xué)生數(shù)據(jù)了:
圖片描述

4. 獲取學(xué)生接口

4.1 定義路由

上面已經(jīng)定義好了學(xué)生相關(guān)的控制器,獲取學(xué)生接口只需要定義路由和方法即可,路由定義如下圖所示:
圖片描述

4.2 定義方法

下面定義一下路由里面指向的 getStudent() 方法,方法如下:

    // 獲取單個學(xué)生信息
    public function getStudent()
    {
        $student_id = (int)$this->request->param('student_id');
        if (!$student_id) {
            return json('參數(shù)不合法', 404);
        }
        //查詢單條數(shù)據(jù)
        $student = StudentModel::where('id', $student_id)->where('status', 1)->find();
        if (empty($student)) {
            return json('學(xué)生信息不存在', 404);
        }
        //把時間戳轉(zhuǎn)化為可讀的日期格式
        $student->created_at = date("Y-m-d H:i", $student->created_at);
        return json($student);
    }

Tips: 其中 where('id',$student_id) 表示使用 id=$student_id 查詢,find() 方法表示查詢單條。

4.3 請求接口獲取學(xué)生信息

如下圖所示,可以在 postman 請求上述定義好的獲取,并且?guī)闲枰砑拥膮?shù)字段,字段名需要個上面接收的一致:
圖片描述

5. 修改學(xué)生信息接口

5.1 定義路由

上面已經(jīng)定義好了學(xué)生相關(guān)的控制器,獲取學(xué)生接口只需要定義路由和方法即可,路由定義如下圖所示:
圖片描述

5.2 定義方法

下面定義一下路由里面指向的 updateStudent() 方法,方法如下:

    // 修改學(xué)生信息接口
    public function updateStudent()
    {
        $student_id = (int)$this->request->param('student_id');
        //接收請求過來的姓名字段
        $name = (string)$this->request->param('name');
        //接收請求過來的年齡字段
        $age = (int)$this->request->param('age');
        //接口請求過來的身份證字段
        $id_number = (string)$this->request->param('id_number');
        if (!$student_id) {
            return json('參數(shù)不合法', 404);
        }
        //查詢單條數(shù)據(jù)
        $student = StudentModel::where('id', $student_id)->where('status', 1)->find();
        if (empty($student)) {
            return json('學(xué)生信息不存在', 404);
        }
        try {
            $student->name = $name;
            $student->age = $age;
            $student->id_number = $id_number;
            $student->update_at = time(); //時間戳,表示數(shù)據(jù)更新時間
            $student->save();
        } catch (\Exception $exception) {
            return json("學(xué)生數(shù)據(jù)修改失敗" . $exception->getMessage(), 404);
        }
        return json("更新成功");
    }

Tips: 此時 save() 方法表示的是更新數(shù)據(jù),只需要復(fù)制被更新的字段。

5.3 請求接口修改學(xué)生信息

如下圖所示,可以在 postman 請求上述定義好的獲取,并且?guī)闲枰砑拥膮?shù)字段,字段名需要個上面接收的一致:
圖片描述

更新成功之后就可以在數(shù)據(jù)庫表中查看到新修改的學(xué)生數(shù)據(jù)了:
圖片描述

6. 刪除學(xué)生接口

6.1 定義路由

上面已經(jīng)定義好了學(xué)生相關(guān)的控制器,獲取學(xué)生接口只需要定義路由和方法即可,路由定義如下圖所示:
圖片描述

6.2 定義方法

下面定義一下路由里面指向的 deleteStudent() 方法,方法如下:

    // 刪除學(xué)生
    public function deleteStudent()
    {
        $student_id = (int)$this->request->param('student_id');
        if (!$student_id) {
            return json('參數(shù)不合法', 404);
        }
        //查詢單條數(shù)據(jù)
        $student = StudentModel::where('id', $student_id)->where('status', 1)->find();
        if (empty($student)) {
            return json('學(xué)生信息不存在', 404);
        }
        $student->status = 2;
        $student->save();
        return json("刪除成功");
    }

Tips: 此時 save() 方法表示的是更新數(shù)據(jù),并且刪除是用的 軟刪除

6.3 請求接口刪除學(xué)生

如下圖所示,可以在 postman 請求上述定義好的獲取,并且?guī)闲枰砑拥膮?shù)字段,字段名需要個上面接收的一致:
圖片描述

更新成功之后就可以在數(shù)據(jù)庫表中查看到被 軟刪除 的學(xué)生數(shù)據(jù)了:
圖片描述

7.小結(jié)

本小節(jié)介紹了如何新建一個數(shù)據(jù)庫模型類,然后分別定義了學(xué)生信息相關(guān)的增刪改查接口,分別對應(yīng)了 POST、DELETEPUT、GET 請求方式,接口地址相同,但是請求方式不同,會請求到不同指定的方法處理不同的事情。

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