詳解thinkphp中的查詢(xún)語(yǔ)句

thinkphp 是一款開(kāi)源的基于php的web應(yīng)用框架,它提供了許多方便開(kāi)發(fā)的工具和解決方案,包括查詢(xún)語(yǔ)句的構(gòu)建和執(zhí)行。本文將介紹 thinkphp 中的查詢(xún)語(yǔ)句功能,包括查詢(xún)構(gòu)建器和數(shù)據(jù)模型,幫助開(kāi)發(fā)者更有效地進(jìn)行數(shù)據(jù)庫(kù)操作。

一、查詢(xún)構(gòu)建器

ThinkPHP 的查詢(xún)構(gòu)建器是一套面向對(duì)象sql 語(yǔ)句構(gòu)建器,用于快速構(gòu)建復(fù)雜 SQL 語(yǔ)句。在查詢(xún)構(gòu)建器中,可以通過(guò)使用多種方法來(lái)構(gòu)建 select、UPDATE、INSERT 和 delete 等類(lèi)型的 SQL 語(yǔ)句。

  1. SELECT 查詢(xún)語(yǔ)句

使用 SELECT 查詢(xún)語(yǔ)句可以獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)。可以使用查詢(xún)構(gòu)建器的 select() 方法來(lái)構(gòu)建 SELECT 查詢(xún)語(yǔ)句:

// 查詢(xún)所有用戶(hù)數(shù)據(jù) Db::name('user')->select();  // 查詢(xún) id 為 1 的用戶(hù)數(shù)據(jù) Db::name('user')->where('id', 1)->find();  // 查詢(xún)年齡大于 18 歲的用戶(hù)數(shù)據(jù) Db::name('user')->where('age', '>', 18)->select();

在上面的代碼中,Db::name(‘user’) 表示要查詢(xún)的數(shù)據(jù)表。select() 方法表示查詢(xún)所有數(shù)據(jù);find() 方法表示查詢(xún)單條記錄。

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

  1. UPDATE 查詢(xún)語(yǔ)句

使用 UPDATE 查詢(xún)語(yǔ)句可以更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)。可以使用查詢(xún)構(gòu)建器的 update() 方法來(lái)構(gòu)建 UPDATE 查詢(xún)語(yǔ)句:

// 更新 id 為 1 的用戶(hù)數(shù)據(jù) Db::name('user')->where('id', 1)->update(['name' => 'Tom']);  // 將所有用戶(hù)的角色都更新為 2 Db::name('user')->update(['role_id' => 2]);

在 update() 方法中,第一個(gè)參數(shù)表示要更新的記錄的條件,第二個(gè)參數(shù)為更新的數(shù)據(jù)內(nèi)容。

  1. INSERT 查詢(xún)語(yǔ)句

使用 INSERT 查詢(xún)語(yǔ)句可以向數(shù)據(jù)庫(kù)中插入新數(shù)據(jù)。可以使用查詢(xún)構(gòu)建器的 insert() 方法來(lái)構(gòu)建 INSERT 查詢(xún)語(yǔ)句:

// 向 user 表中插入一條新數(shù)據(jù) Db::name('user')->insert(['name' => 'Jack', 'age' => 20, 'role_id' => 1]);

在 insert() 方法中,參數(shù)為要插入的新數(shù)據(jù)內(nèi)容。

  1. DELETE 查詢(xún)語(yǔ)句

使用 DELETE 查詢(xún)語(yǔ)句可以刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)。可以使用查詢(xún)構(gòu)建器的 delete() 方法來(lái)構(gòu)建 DELETE 查詢(xún)語(yǔ)句:

// 刪除 id 為 1 的數(shù)據(jù) Db::name('user')->where('id', 1)->delete();  // 刪除所有角色為 3 的用戶(hù)數(shù)據(jù) Db::name('user')->where('role_id', 3)->delete();

在 delete() 方法中,參數(shù)為要?jiǎng)h除的記錄的條件。

二、數(shù)據(jù)模型

除了查詢(xún)構(gòu)建器之外,ThinkPHP 還提供了一套基于數(shù)據(jù)模型的數(shù)據(jù)庫(kù)操作方式,該方式可以將數(shù)據(jù)表映射成為一個(gè)類(lèi),并且可以根據(jù)類(lèi)屬性的變化自動(dòng)處理數(shù)據(jù)庫(kù)記錄的 CRUD。

  1. 定義數(shù)據(jù)模型

可以使用以下代碼定義一個(gè)數(shù)據(jù)模型類(lèi):

namespace appcommonmodel;  use thinkModel;  class User extends Model {     // 數(shù)據(jù)表名     protected $table = 'user';      // 自動(dòng)寫(xiě)入時(shí)間戳     protected $autoWriteTimestamp = true;      // 模型關(guān)聯(lián):用戶(hù)角色     public function role()     {         return $this->belongsTo(Role::class, 'role_id');     } }

在上面的示例中,我們通過(guò)繼承 thinkModel類(lèi)來(lái)定義了一個(gè)用戶(hù)數(shù)據(jù)模型類(lèi)。其中 $table 屬性表示要映射的數(shù)據(jù)表名,$autoWriteTimestamp 屬性表示是否自動(dòng)寫(xiě)入時(shí)間戳。

  1. 查詢(xún)數(shù)據(jù)

我們可以使用數(shù)據(jù)模型的 find()、select()、where() 等方法來(lái)查詢(xún)數(shù)據(jù)庫(kù):

// 查詢(xún) id 為 1 的用戶(hù)數(shù)據(jù) $user = User::find(1);  // 查詢(xún)用戶(hù)表中所有數(shù)據(jù) $users = User::select();  // 查詢(xún)年齡大于 18 歲的用戶(hù)數(shù)據(jù) $users = User::where('age', '>', 18)->select();

在上面的示例中,我們使用了數(shù)據(jù)模型類(lèi)的靜態(tài)方法來(lái)進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)。

  1. 更新和插入數(shù)據(jù)

我們可以使用數(shù)據(jù)模型的 save() 方法來(lái)更新和插入數(shù)據(jù):

// 更新 id 為 1 的用戶(hù)數(shù)據(jù) $user = User::find(1); $user->name = 'Tom'; $user->save();  // 向 user 表中插入一條新數(shù)據(jù) $user = new User; $user->name = 'Jack'; $user->age = 20; $user->role_id = 1; $user->save();

在上面的示例中,我們使用數(shù)據(jù)模型對(duì)象的屬性來(lái)設(shè)置要更新或插入的數(shù)據(jù),然后調(diào)用 save() 方法提交到數(shù)據(jù)庫(kù)中。

  1. 刪除數(shù)據(jù)

我們可以使用數(shù)據(jù)模型的 delete() 方法來(lái)刪除數(shù)據(jù):

// 刪除 id 為 1 的用戶(hù)數(shù)據(jù) $user = User::find(1); $user->delete();  // 刪除所有角色為 3 的用戶(hù)數(shù)據(jù) User::where('role_id', 3)->delete();

在上面的示例中,我們使用了數(shù)據(jù)模型對(duì)象的 delete() 方法刪除指定記錄,也可以使用靜態(tài)方法的 where() 方法來(lái)選擇要?jiǎng)h除的記錄,然后調(diào)用 delete() 方法刪除。

總結(jié)

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享