国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

關于ThinkPHP5的數據庫和模型用法

2020-03-22 20:22:24
字體:
來源:轉載
供稿:網友
1,TP5的數據庫架構

這里寫圖片描述

Db: 是TP5操作數據庫的入口類。它的作用是為連接數據庫做準備,我們只需要在database.php里填寫相應的配置即可。
Connection: 是TP5的連接器類,因為TP5支持四種數據庫(Mysql,Pgsql,Sqlite,Sqlsrv),所以TP5封裝了一個類來提供統一的調用接口來支持我們連接數據庫(這里的連接是惰性連接,只有在執行SQL的時候才會真正連接)。
Query: 查詢器,因為不同數據庫的SQL語句不同,所以封裝了一個Query類來提供統一的接口,以實現不同數據庫的CURD操作。查詢器是TP5數據訪問層的核心,它連接了Connection和Builder。
Builder: 生成器。這個類主要是把Query的查詢參數生成相應的sql語句,然后把其返回給Connection供其使用。
2, 數據庫的訪問

在TP5中,對于數據庫的訪問有三種方法:

原生sql語句。

Db::query( select * from think_user where id=? ,[8]);Db::execute( insert into think_user (id, name) html' target='_blank'>values (?, ?) ,[8, thinkphp 

查詢構造器

這里寫圖片描述

需要注意的是,上述的查詢方法中find,select,insert,update,delete都是查詢操作,其他的都是輔助操作,輔助操作返回的是個對象,支持鏈式調用。但一旦執行了查詢操作,就不能繼續調用了。

不同的輔助操作先后順序沒影響,但是相同的輔助操作先后順序會有影響。

不同的輔助操作,先后順序沒影響。Db::table( banner )- where( id , , 2 )- order( update_time asc )- select();Db::table( banner )- order( update_time asc )- where( id , , 2 )- select();
相同的查詢操作,先后順序有影響。$list = Db::table( data ) - where( id , , 1) - where( name , like , %think% ) - order( id , desc ) - order( create_time , desc ) - limit(8) - select();$list = Db::table( data ) - where( name , like , %think% ) - where( id , , 1) - order( create_time , desc ) - order( id , desc ) - limit(8) - select();

模型

ORM Object Relation Mapping 對象關系映射

就是通過模型來映射到我們的數據庫中的表,然后通過操作模型來操作數據庫。

我們通過和查詢構造器對比來看

// 查詢操作$user = Db::table( user )- find(1);// 取值操作echo $user[ name echo $user[ email // 設置操作$user[ name ] = topthink $user[ email ] = thinkphp@qq.com // 更新操作Db::table( user )- update($user);

如果是模型操作的話,就可以對應下面的代碼實現

// 查詢操作$user = User::get(1);// 取值操作echo $user- name;echo $user- email;// 設置操作$user- name = topthink $user- email = thinkphp@qq.com // 更新操作$user- save();

這里是在模型的外部,也就是控制器里的取值和設置操作,但是在模型內部,是使用如下方式:

// 取值操作echo $user- getData( name echo $user- getData( email // 設置操作echo $user- data( name , SpawN echo $user- data( email , 123@qq.com 

模型的CURD操作

創建

Db 用法:

Db::table( user )- insert([ name = spawn , email = 123@qq.com ])

模型用法:

$user = new User;$user- save([ name = spawn , email = 123@qq.com ])$user = User::create([ name = sapwn , email = 123@qq.com ])

總結:

save(動態) 返回: 影響的記錄數

create(靜態) 返回:模型對象實例 (可以直接調用方法)

讀取

Db :

$user = Db::table( user )- where( id , 1)- find();

模型:

$user = User::get(1);

需要注意的是,find和select是查詢構造器的方法,get和all是模型的方法。但模型又是基于查詢構造器的,所以模型可以調用find和select方法,但是查詢構造器不能調用get和all方法

總結:

方法 作用 返回值
get 查詢單個記錄 模型對象實例
find 查詢單個記錄 模型對象實例
all 根據主鍵查詢多個記錄 包含模型對象實例的數組或者數據集
select 根據條件查詢多個記錄 包含模型對象實例的數組或者數據集

更新

Db :

Db::table( user )- where( id , 1)- update([ name = haha , email = heihei@qq.com ])

模型:

$user = User::get(1);$user- save([ name = haha , email = heihei@qq.com ])User::update([ name = topthink , email = topthink@qq.com ,], [ id = 1]);

總結:

方法 作用 返回值
save 更新數據 影響的記錄數
update 更新數據(靜態) 返回模型對象實例

需要注意的是,模型的更新操作是只更新有變化的數據。性能比較好。

刪除

Db:

Db::table( user )- delete(1);

模型:

$user = User::get(1);$user- delete();User::destory(1);

總結:

方法 作用 返回值
delete 刪除當前數據 影響的記錄數
destroy 刪除指定數據(靜態) 影響的記錄數

現在我們已經掌握了模型的基本CURD操作,我們來總結下方法區別:

用法 Db類 模型(動態) 模型(靜態)
創建 insert save create
更新 update save update
讀取單個 find find get
讀取多個 select select all
刪除 delete delete destroy

本文講解了關于ThinkPHP5的數據庫和模型用法 ,更多相關內容請關注php 。

相關推薦:

關于thinkphp5.0數據庫操作的案例

列舉ThinkPHP5與ThinkPHP3的一些異同點

創建一個最簡單的ThinkPhp項目工程

以上就是關于ThinkPHP5的數據庫和模型用法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长子县| 黑山县| 曲水县| 元朗区| 伊宁市| 昆山市| 西城区| 凤山县| 北碚区| 绥江县| 隆德县| 昆山市| 新昌县| 沁阳市| 黑水县| 贵定县| 荥经县| 宁城县| 濮阳市| 亚东县| 遂川县| 天津市| 赤壁市| 绥中县| 启东市| 高青县| 依安县| 桂东县| 通城县| 安福县| 翁牛特旗| 南宁市| 高阳县| 南陵县| 罗源县| 仙居县| 鹤庆县| 聂拉木县| 杭锦旗| 南昌县| 长兴县|