日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

数据据操作 tp5

發(fā)布時(shí)間:2024/8/5 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 数据据操作 tp5 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)庫(kù)操作-DB類

學(xué)習(xí)手冊(cè)

數(shù)據(jù)庫(kù)配置

注意1:在TP里面,可以在模塊下面單獨(dú)的建立一個(gè)database.php配置文件,代表這個(gè)模塊就使用配置的這個(gè)數(shù)據(jù)庫(kù)

注意2:我們可以在config.php里面配置多個(gè)數(shù)據(jù)信息也是可以的

數(shù)據(jù)庫(kù)操作-查詢

先在控制器引入Db類

使用Db類的query方法即可

查詢也可以使用占位符

數(shù)據(jù)庫(kù)操作-增刪改

使用Db類的execute方法

數(shù)據(jù)庫(kù)切換

在application/config.php里面配置一個(gè)db1的數(shù)據(jù)庫(kù)信息

使用Db::connect('db1')獲取dedecms數(shù)據(jù)庫(kù)里面的數(shù)據(jù)

手冊(cè):

構(gòu)造器-查詢

方式一:獲取所有的數(shù)據(jù)

效果

方式二:獲取單條數(shù)據(jù)(a.根據(jù)主鍵b.查詢條件)

效果

例如:查詢用戶名為caoyang的記錄

構(gòu)造器-添加

構(gòu)造器-更新

構(gòu)造器-刪除

別名處理

對(duì)于上面的查詢構(gòu)造器,使用的是Db::table(表前綴的表名),可以換一種方式來(lái)不寫表前綴

Db::name('不要表前綴的表名')

建議使用Db::name()方法調(diào)用

助手函數(shù)

在新版TP5里面已經(jīng)不存在M()函數(shù)(tp3.2的時(shí)候可以幫我們實(shí)例化系統(tǒng)的模型)使用的是db()幫助函數(shù)進(jìn)行替換

db('不要前綴的表名')->select();

閉包查詢

db('admin')->select(function($query){

// $query里面可以設(shè)置查詢的條件

});

使用Query對(duì)象查詢

有點(diǎn)類似laravel里面的查詢構(gòu)造器

模型學(xué)習(xí)

在MVC里面,M是負(fù)責(zé)對(duì)數(shù)據(jù)的處理,其實(shí)在TP5里面模型封裝的已經(jīng)很好了,基本上我們不用做過(guò)多的操作,使用系統(tǒng)自帶的基類即可完成大部分的curd操作。

模型定義

需要寫在模塊的model目錄下,我們可以使用TP5自帶的命令行工具進(jìn)行生成。

注意1:在TP5里面模型也不在使用類后綴,直接就是使用去除表前綴后的名稱作為模型的名稱。(模型名稱使用大駝峰的方式)

例如:表的名稱為 sh_admin對(duì)應(yīng)的模型文件名稱Admin.php

例如:表的名稱為 sh_goods_attribute對(duì)應(yīng)的模型文件名稱GoodsAttribute.php

>php think make:model appindexmodelUser

創(chuàng)建后

定義sh_user表

上面的模型和下面的sh_user是對(duì)應(yīng)的

基本操作-增加

完成數(shù)據(jù)的增加主要有如下幾種方法

模型對(duì)象的save方法(先為對(duì)象設(shè)置屬性)
模型類的create靜態(tài)方法
模型對(duì)象的saveAll批量添加方法

實(shí)操:

1.模型對(duì)象的save方法(先為對(duì)象設(shè)置屬性)

2.模型類的create靜態(tài)方法【簡(jiǎn)化操作】

3.模型對(duì)象的saveAll批量添加方法【上面的兩種操作,都只能完成單條數(shù)據(jù)的插入,如果批量插入數(shù)據(jù),需要使用模型對(duì)象的saveAll方法】

基本操作-查看

查詢數(shù)據(jù)主要有如下幾種方法

模型類的get靜態(tài)方法【存在返回值為對(duì)象,否則為null】
通過(guò)字段查詢getByFieldname()方法
根據(jù)條件查詢get(['username' => 'root'])
where方法查詢->find()
where方法查詢->select()
模型類的all靜態(tài)方法和select靜態(tài)方法

實(shí)操:

1.模型類的get靜態(tài)方法【存在返回值為對(duì)象,否則為null】,通過(guò)傳遞主鍵獲取數(shù)據(jù)

效果

2.根據(jù)條件查詢get(['username' => 'root'])

方式一:

方式二:使用where方法傳遞(需要注意后面要通過(guò)find()方法調(diào)用一下)

3.通過(guò)模型對(duì)象的字段查詢getByFieldname('查詢條件')方法

模型類的where方法查詢,然后調(diào)用find()方法

5.where方法查詢->select()

方式一:

方式二:

6.模型類的all靜態(tài)方法和select靜態(tài)方法

注意:對(duì)應(yīng)all和select方法返回的數(shù)據(jù),是一個(gè)數(shù)組,數(shù)組中的每個(gè)元素是一個(gè)模型對(duì)象,如果我們需要把他們轉(zhuǎn)換為普通的二維數(shù)組(數(shù)組中的元素也是數(shù)組)

效果:

便捷方式獲取模型實(shí)例

在新版的Tp5里面可以有如下兩種便捷方式獲取模型實(shí)例:

方式一:使用model助手函數(shù)

方式二:使用TP5自帶的Loader類的model靜態(tài)方法

總結(jié):在新版的TP5里面,在原先TP3.2里面的單字母函數(shù)D已經(jīng)不存在,取而代之的是model函數(shù)。

基本操作-更新

更新數(shù)據(jù)主要有如下幾種方法

1.先 get(),后save()

2.模型類update靜態(tài)方法

實(shí)操:

1.先調(diào)用模型類的get()靜態(tài)方法,然后在調(diào)用模型對(duì)象的save()方法

2.模型類update靜態(tài)方法

方式一:

方式二:

基本操作-刪除

刪除數(shù)據(jù)主要有如下幾種方法

1.先使用模型類的get()靜態(tài)方法,然后在使用模型對(duì)象的delete()方法

2.模型類destroy靜態(tài)方法

實(shí)操:

1.先使用模型類的get()靜態(tài)方法,然后在使用模型對(duì)象的delete()方法

2.模型類destroy靜態(tài)方法

3.使用destroy同時(shí)刪除多條數(shù)據(jù)

4.模型對(duì)象的delete方法進(jìn)行刪除(需要傳遞刪除條件)

相關(guān)文檔

網(wǎng)站:https://www.kancloud.cn/manual/thinkphp5/135186

模型關(guān)聯(lián)

注意:在TP里面的模型關(guān)聯(lián)沒(méi)有l(wèi)aravel里面那么好用,簡(jiǎn)單的了解即可,一般來(lái)說(shuō),還是建議自己在代碼里面完成模型間的關(guān)系處理。不要過(guò)來(lái)的依賴模型關(guān)聯(lián)。

在TP里面主要是定義三種模型關(guān)聯(lián)類型:

一對(duì)一

簡(jiǎn)介

注意:一對(duì)一的關(guān)系是可以在一張表里面完成的,但是一般來(lái)說(shuō),數(shù)據(jù)有冷熱之分,熱數(shù)據(jù)(查詢頻繁的數(shù)據(jù),應(yīng)該單獨(dú)的抽取稱為一張表,水平方向字段數(shù)應(yīng)該盡可能的少)冷數(shù)據(jù)(查詢較少的數(shù)據(jù),單獨(dú)的放在另外的一張表里面進(jìn)行操作,通過(guò)一個(gè)外鍵和熱數(shù)據(jù)表進(jìn)行關(guān)聯(lián)。例如下面的表里面的是通過(guò)sh_profile表里面的user_id產(chǎn)生的關(guān)聯(lián)。)

場(chǎng)景:例如一個(gè)用戶存在一個(gè)具體的用戶履歷信息

sh_user用戶表

id

username

passsword

email

1

caoyang

admin88

gogery@163.com

3

andy

admin88

andy@sina.com

sh_profile履歷表

id

user_id

address

card_id

education

......

23

1

深圳市

421023112

本科

........

34

3

廣州市

7754123123

碩士

自己手工的連表查詢:

> select a.*, b.address from sh_user a left join sh_profile b on a.id = b.user_id where a.id = 3;

關(guān)聯(lián)查詢

建立用戶表和履歷表

創(chuàng)建User.php和Profile.php模型文件,并在User.php模型文件里面定義模型關(guān)聯(lián)信息

履歷表模型

查詢關(guān)聯(lián)信息

效果:

對(duì)于上面的操作,完全可以自己寫sql完成

百度:鏈?zhǔn)讲僮?/p>

http://www.thinkphp.cn/topic/43233.html

關(guān)聯(lián)添加

1.完全可以自己去在代碼里面完成,沒(méi)必要依賴TP的關(guān)聯(lián)模型

使用Tp的關(guān)聯(lián)模型進(jìn)行數(shù)據(jù)的添加

一對(duì)多

簡(jiǎn)介

一對(duì)多的模型還是很常見(jiàn)的,一般解決方法就是增加一張附加表,然后在附加表里面增加一個(gè)關(guān)聯(lián)字段。

常見(jiàn):一個(gè)用戶可以存在多本書(shū)籍。

sh_user表:

id

username

passsword

email

1

caoyang

admin88

gogery@163.com

3

andy

admin88

andy@sina.com

sh_book表

id

user_id

img

author

title

....

1

3

1.jpg

莫言

分錄肥臀

3

3

3.jpg

西紅柿

斗戰(zhàn)

關(guān)聯(lián)查詢

創(chuàng)建book模型,并且在user模型里面定義關(guān)聯(lián)關(guān)系

定義關(guān)系

構(gòu)造測(cè)試數(shù)據(jù)

查詢數(shù)據(jù)

關(guān)聯(lián)添加

1.不依賴TP的關(guān)聯(lián)模型,自己手工的解決

使用Tp的關(guān)聯(lián)模型完成

多對(duì)多

文檔:https://www.kancloud.cn/manual/thinkphp5/142359

自動(dòng)驗(yàn)證

相關(guān)文檔:https://www.kancloud.cn/manual/thinkphp5/129319

場(chǎng)景:用戶的添加的時(shí)候完成自動(dòng)驗(yàn)證,在TP5里面可以使用多種方式完成驗(yàn)證操作。

驗(yàn)證類文件-方式一

在模塊下建立一個(gè)validate目錄,編寫對(duì)應(yīng)的驗(yàn)證類(類文件的名稱和模型名稱一致)

在控制器中使用模型對(duì)象的validate方法調(diào)用

效果

驗(yàn)證類文件-方式二

控制器驗(yàn)證-方式一

調(diào)用控制器的$this->validate(驗(yàn)證數(shù)據(jù),驗(yàn)證類名稱)方法

控制器驗(yàn)證-方式二

1.調(diào)用控制器的$this->validate(驗(yàn)證數(shù)據(jù),驗(yàn)證的規(guī)則)方法

注意:驗(yàn)證通過(guò)返回true,否則返回錯(cuò)誤的提示信息

注意:如果用戶想自定義驗(yàn)證提示信息,則可以傳遞第三個(gè)參數(shù)

系統(tǒng)驗(yàn)證類的使用

在有的時(shí)候我們不希望自己定義驗(yàn)證類來(lái)處理,可以使用系統(tǒng)自帶的Validate類進(jìn)行驗(yàn)證

驗(yàn)證類的靜態(tài)方法

演示

驗(yàn)證場(chǎng)景

TP里面使用了一種叫做驗(yàn)證場(chǎng)景的概念,針對(duì)不同的場(chǎng)合使用不同的驗(yàn)證,例如:在添加的時(shí)候有添加的驗(yàn)證規(guī)則;在更新的時(shí)候有更新的規(guī)則

表單驗(yàn)證

主要是為了防止外站提交(csrf攻擊)

解決:

1.在服務(wù)器返回表單信息的之前,生成一個(gè)唯一的密鑰,然后在表單里面的隱藏域里面存放一下,同時(shí)還要把數(shù)據(jù)存到session里面一下。

2.用戶填完信息后,點(diǎn)擊提交后,檢測(cè)用戶表單隱藏域里面的密鑰和session里面的時(shí)候一樣,一樣則沒(méi)有偽造提交(外站提交)

實(shí)現(xiàn):

1.在提交表單里面使用token()函數(shù)生成一個(gè)隱藏域

在自動(dòng)驗(yàn)證里面進(jìn)行驗(yàn)證

坑-dateFormat驗(yàn)證規(guī)則

在TP5如果需要驗(yàn)證某個(gè)時(shí)間數(shù)據(jù),可以指定驗(yàn)證個(gè)還是,我們可以使用dateFormat規(guī)則,同時(shí)為其傳遞一個(gè)驗(yàn)證的規(guī)則字符串。

查看Validate底層的dateFormat方法

相關(guān)文檔:

http://code.ziqiangxuetang.com/php/func-date-parse-from-format.html

SQL調(diào)試

本地調(diào)試模式開(kāi)啟

修改config.php配置文件即可

打印最后執(zhí)行的sql

總結(jié)

以上是生活随笔為你收集整理的数据据操作 tp5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。