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教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答