麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

關(guān)于ThinkPHP5的數(shù)據(jù)庫和模型用法

2020-03-22 20:22:24
字體:
供稿:網(wǎng)友
1,TP5的數(shù)據(jù)庫架構(gòu)

這里寫圖片描述

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

在TP5中,對(duì)于數(shù)據(jù)庫的訪問有三種方法:

原生sql語句。

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

查詢構(gòu)造器

這里寫圖片描述

需要注意的是,上述的查詢方法中find,select,insert,update,delete都是查詢操作,其他的都是輔助操作,輔助操作返回的是個(gè)對(duì)象,支持鏈?zhǔn)秸{(diào)用。但一旦執(zhí)行了查詢操作,就不能繼續(xù)調(diào)用了。

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

不同的輔助操作,先后順序沒影響。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 對(duì)象關(guān)系映射

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

我們通過和查詢構(gòu)造器對(duì)比來看

// 查詢操作$user = Db::table( user )- find(1);// 取值操作echo $user[ name echo $user[ email // 設(shè)置操作$user[ name ] = topthink $user[ email ] = [email protected] // 更新操作Db::table( user )- update($user);

如果是模型操作的話,就可以對(duì)應(yīng)下面的代碼實(shí)現(xiàn)

// 查詢操作$user = User::get(1);// 取值操作echo $user- name;echo $user- email;// 設(shè)置操作$user- name = topthink $user- email = [email protected] // 更新操作$user- save();

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

// 取值操作echo $user- getData( name echo $user- getData( email // 設(shè)置操作echo $user- data( name , SpawN echo $user- data( email , [email protected] 

模型的CURD操作

創(chuàng)建

Db 用法:

Db::table( user )- insert([ name = spawn , email = [email protected] ])

模型用法:

$user = new User;$user- save([ name = spawn , email = [email protected] ])$user = User::create([ name = sapwn , email = [email protected] ])

總結(jié):

save(動(dòng)態(tài)) 返回: 影響的記錄數(shù)

create(靜態(tài)) 返回:模型對(duì)象實(shí)例 (可以直接調(diào)用方法)

讀取

Db :

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

模型:

$user = User::get(1);

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

總結(jié):

方法 作用 返回值
get 查詢單個(gè)記錄 模型對(duì)象實(shí)例
find 查詢單個(gè)記錄 模型對(duì)象實(shí)例
all 根據(jù)主鍵查詢多個(gè)記錄 包含模型對(duì)象實(shí)例的數(shù)組或者數(shù)據(jù)集
select 根據(jù)條件查詢多個(gè)記錄 包含模型對(duì)象實(shí)例的數(shù)組或者數(shù)據(jù)集

更新

Db :

Db::table( user )- where( id , 1)- update([ name = haha , email = [email protected] ])

模型:

$user = User::get(1);$user- save([ name = haha , email = [email protected] ])User::update([ name = topthink , email = [email protected] ,], [ id = 1]);

總結(jié):

方法 作用 返回值
save 更新數(shù)據(jù) 影響的記錄數(shù)
update 更新數(shù)據(jù)(靜態(tài)) 返回模型對(duì)象實(shí)例

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

刪除

Db:

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

模型:

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

總結(jié):

方法 作用 返回值
delete 刪除當(dāng)前數(shù)據(jù) 影響的記錄數(shù)
destroy 刪除指定數(shù)據(jù)(靜態(tài)) 影響的記錄數(shù)

現(xiàn)在我們已經(jīng)掌握了模型的基本CURD操作,我們來總結(jié)下方法區(qū)別:

用法 Db類 模型(動(dòng)態(tài)) 模型(靜態(tài))
創(chuàng)建 insert save create
更新 update save update
讀取單個(gè) find find get
讀取多個(gè) select select all
刪除 delete delete destroy

本文講解了關(guān)于ThinkPHP5的數(shù)據(jù)庫和模型用法 ,更多相關(guān)內(nèi)容請(qǐng)關(guān)注php 。

相關(guān)推薦:

關(guān)于thinkphp5.0數(shù)據(jù)庫操作的案例

列舉ThinkPHP5與ThinkPHP3的一些異同點(diǎn)

創(chuàng)建一個(gè)最簡單的ThinkPhp項(xiàng)目工程

以上就是關(guān)于ThinkPHP5的數(shù)據(jù)庫和模型用法的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品国产成人 | 伊人亚洲精品 | 午夜视频在线 | 欧美成人午夜一区二区三区 | 国产精品91在线 | 国产成人综合在线观看 | 69性欧美高清影院 | 欧美成人精品欧美一级乱黄 | 亚洲午夜免费电影 | 精品1| 小情侣嗯啊哦视频www | jizzjizzjizzjizz国产 | 中文在线观看www | 56av国产精品久久久久久久 | 日本黄色免费播放 | 欧美精品一区二区三区久久久 | 久久人人做 | 欧美性生交zzzzzxxxxx | 久久国产一 | 91精品国产刺激国语对白 | 在线观看一二三 | 精品国产高清一区二区三区 | 久久精品视频一区二区 | 免费在线观看一级片 | 毛片一级网站 | 欧美激情精品久久久久久久久久 | 性生活视频软件 | 国产激情精品一区二区三区 | 国产99视频精品免视看9 | 麻豆蜜桃在线观看 | 国产九色在线观看 | 91免费视频版 | 亚洲第一色婷婷 | 视频一区二区三区视频 | 色综合久久久久久久久久 | 国产一国产一级毛片视频在线 | 黄色毛片视频在线观看 | 色污视频| 成人在线观看免费 | 中文有码一区二区 | 男女无套免费视频 |