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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

thinkphp项目mysql类关系_ThinkPHP数据库与模型

發(fā)布時間:2024/1/23 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thinkphp项目mysql类关系_ThinkPHP数据库与模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)庫連接器與查詢構(gòu)造器

總結(jié):同之前版本相比,ThinkPHP5的數(shù)據(jù)庫操作對底層進行優(yōu)化設(shè)計,對各種操作進行了高級封裝。既可以直接使用連接器進行高效的原聲查詢,也可以使用封裝好的查詢構(gòu)造器進行直觀便捷的查詢,為模型操作打下了基礎(chǔ)。

連接數(shù)據(jù)庫

配置方法:

1.靜態(tài)連接:應(yīng)用/模塊中的數(shù)據(jù)庫配置文件database.php

2.動態(tài)連接:入口類Db.php中的connect(參數(shù)(數(shù)組和字符串))方法

動態(tài)配置連接字符串:mysql://root:1234@localhost:3306/thinkphp#utf8

數(shù)據(jù)庫類型://用戶名:密碼@數(shù)據(jù)庫地址:數(shù)據(jù)庫端口/數(shù)據(jù)庫名#字符集總結(jié):操作數(shù)據(jù)庫的第一步就是數(shù)據(jù)庫的連接,TP5提供了強大靈活的連接方式,特別是惰性鏈接支持,極大提高了連接效率(db()助手函數(shù)不支持),使用戶的關(guān)注重點放在業(yè)務(wù)邏輯上,不必擔(dān)心連接問題。

原生SQL查詢

Connection類

1.query(sql語句字符串,[參數(shù)綁定]):讀操作,select。

2.execute(sql語句字符串,[參數(shù)綁定]):寫操作,insert,update,delete。

Connection類實例通過入口類Db靜態(tài)自動調(diào)用,不用顯示寫出。

參數(shù)綁定:防止SQL注入,用命名占位符進行參數(shù)綁定。

//1.查詢操作:工資大于4000元的員工信息,用命名占位符進行參數(shù)綁定$sql = "select name,salary,dept from staff where salary > :salary";$result = Db:query($sql,['salary'=>4000]);

//2.更新操作,將id=1004的記錄,salary增加1000$sql = "update staff set salary = salary+1000 where id=:id";Db::execute($sql,['id'=>'1004']);

//3.插入操作:默認添加到表的尾部的$sql = "insert into staff (name,sex,age) values (:name,:sex,:age)";Db::execute($sql,['name'=>'Alert','sex'=>1,'age'=>33]);

//4.刪除操作:id=1010的記錄$sql = "delete from staff where id=:id";Db::execute($sql,['id'=>1010]);總結(jié):因為數(shù)據(jù)只能識別并運行原生SQL語句,所以對于數(shù)據(jù)庫的一切查詢操作,最終都要歸結(jié)到原生查詢。包括后面要學(xué)到的,利用查詢構(gòu)造器來進行增刪改查操作,最終仍是調(diào)用連接類Connection對應(yīng)方法完成。

查詢構(gòu)造器工作原理與鏈?zhǔn)讲僮?/p>

1.查詢構(gòu)造器的工作原理?

2.什么是鏈?zhǔn)讲僮?#xff1f;為什么要用鏈?zhǔn)讲僮?#xff1f;

3.數(shù)據(jù)表的查詢條件是如何生成的?

table,field,where

4.如何用查詢構(gòu)造器實現(xiàn)數(shù)據(jù)表的增刪改查(CURD)操作?

查詢條件生成的三種方法

新增與更新操作1.新增

insert(['字段'=>'值'])

insert(['二維數(shù)組'])2.更新

update(['字段'=>'值'])

setInc/setDec('字段',步長)

查詢與刪除操作1.讀取

find(主鍵)

select(主健)2.刪除

delete(主鍵)

delete(true)總結(jié):查詢條件的調(diào)用次序是生成SQL條件的次序,推薦使用閉包,來生成查詢條件,不僅功能強大,而且便于擴展。

模型入門知識1.什么是模型,有什么用?

模型是對實體的抽象描述,快速直觀的展示出實體的特征。2.模型類中有哪些屬性和方法

1)模型類的屬性和方法需要在基類Model.php;

2)Model.php類位于public/library/think/Model.php;

3)該類是一個抽象類,不能被實例化,必須由子類繼承并實現(xiàn)內(nèi)部全部抽象方法。

模型的創(chuàng)建與使用方法1.模型于數(shù)據(jù)表的對應(yīng)關(guān)系

2.模型與數(shù)據(jù)表的區(qū)別與聯(lián)系

區(qū)別

分工不同:Db類負則數(shù)據(jù)表的訪問,模型專注于業(yè)務(wù)邏輯處理

返回值不同:Db訪問返回數(shù)組,模型操作返會對象

聯(lián)系

模型最終仍需調(diào)用Db類完成數(shù)據(jù)表的查詢操作3.如何創(chuàng)建模型

1.手工創(chuàng)建:在喲ing用或模塊下創(chuàng)建模型目錄model,并在該目錄下創(chuàng)建與數(shù)據(jù)表同名的類文件:如User.php對應(yīng)user.dbf表;

2.命令創(chuàng)建:在當(dāng)前項目目錄下,用命令:php think make:model模塊名/模型名,會自動創(chuàng)建指定位置和命名空的空模型,并自動與數(shù)據(jù)表綁定;

php think make:model index/student

3.模型創(chuàng)建完成后,會自動獲取當(dāng)前數(shù)據(jù)表名稱$table,表中所有字段信息$field,主鍵$pk和數(shù)據(jù)庫配置信息$connection。同時會自動繼承基類Model中所有屬性和方法,protected類型在本模型中使用,public類型還可以在控制器使用,靜態(tài)方法大多直接用在控制器,進行CURD操作。

4.如何在控制器調(diào)用模型

1)實例化調(diào)用:

用new生成模型對象;

用模型對象處理相關(guān)業(yè)務(wù);

2)靜態(tài)調(diào)用:

通過靜態(tài)查詢直接將一個空模型轉(zhuǎn)為數(shù)據(jù)模型;

再調(diào)用相關(guān)方法完成增刪改查操作;

3)不推薦使用助手函數(shù)model()和添加模型類后綴

5.模型數(shù)據(jù)訪問的方式模型訪問方式

控制器訪問(外部):用模型對象:$model;

模型訪問(內(nèi)部):用偽對象變量:$this;通過模型和表中添加數(shù)據(jù)

1.什么是CURP操作?

2.Create創(chuàng)建數(shù)據(jù)

1)數(shù)據(jù)創(chuàng)建過程可以觸發(fā)很多操作,非Db操作可比;

2)靜態(tài)調(diào)用的實質(zhì)其實仍是實例化調(diào)用,只是將CURD方法進行靜態(tài)封裝;

3)saveAll()方法實際上是通過多次執(zhí)行insert語句完成,很少用到;

4)理論上講,通過模型向表中添加數(shù)據(jù),盡可能都采用靜態(tài)方式。通過模型更新表中的數(shù)據(jù)

1)不允許無條件更新,必須設(shè)置更新條件;

2)可以將更新條件,如主鍵寫在更新數(shù)據(jù)中,方法可以自動識別;

3)更新條件可以使用閉包,完成更復(fù)雜的業(yè)務(wù)邏輯。

通過模型來查詢表中的數(shù)據(jù)

1.ORM模型(對象關(guān)系映射)

ThinkPHP5實現(xiàn)了基于ActiveRecords模式的ORM模型

2.Read讀取操作

1)原則來說,查詢都應(yīng)該采用靜態(tài)查詢方法;

2)盡可能采用get()和all()方法代替find()和select();

3)牢記一條原則:一個模型對象實例應(yīng)該唯一對應(yīng)數(shù)據(jù)表的一條記錄;

通過模型來刪除表中記錄

1)delete()方法不要傳任何參數(shù),它只刪除當(dāng)前模型對象對應(yīng)的記錄;

2)destory()中的刪除條件,推薦采用閉包方式;

3)推薦用軟件刪除替代該方法,即用更新的方式來實現(xiàn)刪除操作。

模型讀取器和修改器設(shè)置方法

1.模型的讀取器

觸發(fā)條件:當(dāng)用模型對象讀取表中字段的時候;

應(yīng)用場景:日期時間字段,集合或枚舉數(shù)據(jù),數(shù)字狀態(tài)與文本轉(zhuǎn)換,字段拼裝;

設(shè)置位置:在模型中設(shè)置,訪問屬性通常為protected,不允許外部直接訪問;

方法名稱:get屬性名稱Attr($name,$data=[])。

2.模型修改器

觸發(fā)條件:當(dāng)用模型對象向數(shù)據(jù)表中心增記錄或更新字段值的時候;

應(yīng)用場景:日期時間字段,集合或枚舉數(shù)據(jù),數(shù)字狀態(tài)與文本轉(zhuǎn)換,字段瓶裝;

設(shè)置位置:在模型中設(shè)置,訪問屬性通常為protected,不允許外部直接訪問;

方法名稱:set屬性名稱Attr($name,$data=[])。

修改器的工作原理圖

總結(jié):模型的獲取器與修改器,是模型中最常用的自定義方法,配合后面要學(xué)習(xí)的驗證器,可以讓用戶更安全的讀取數(shù)據(jù)表中的數(shù)據(jù)。

模型數(shù)據(jù)類型轉(zhuǎn)換屬性

類型轉(zhuǎn)換

總結(jié):通過配置屬性值的方式,來完成寫入數(shù)據(jù)的類型自動轉(zhuǎn)換,比用修改器和讀取器更加靈活方方便。如果數(shù)據(jù)處理邏輯不復(fù)雜,推薦使用這種方式來替代傳統(tǒng)的讀取器和修改器方法。

超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的thinkphp项目mysql类关系_ThinkPHP数据库与模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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