thinkphp中什麼是orm
在thinkphp中,ORM指的是“物件關聯映射”,是為方便開發者使用資料庫開發的一個儲存存取層;ORM的主要用途是把物件模型表示的物件映射到基於sql的關係模型資料庫結構中去。
本教學操作環境:Windows7系統、thinkphp v5.1版、Dell G3電腦。
thinkphp中的orm
ORM的全名為Object Relational Mapping,也就是物件關係對應
#O(Object) 對象,在專案中就是實體,更精確的來說就是資料Model,也可以說持久化類別。
R(Relation) 關聯式資料
M (Mapping)映射,將物件映射到關聯數據,將關係資料映射到物件的過程。
更直覺理解就是,ORM 就是以OOP思想,產生增刪改查SQL語句。
ThinkPHP的ORM是為方便開發者使用資料庫開發的一個儲存存取層,框架設計圖片如下:
主要用途是:把物件模型表示的物件映射到基於sql的關係模型資料庫結構中去。
當改變這個物件本身的屬性或呼叫該物件的方法時,相對應的是執行某些sql語句。
這樣子寫程式碼的人員就可以更好地寫業務邏輯,而不是重複地寫增刪改查sql語句。
thinkphp中的運用範例
TP框架中關於資料庫操作有兩個模組:
資料庫
模型
#tp中的資料庫模組
引用一句文件的特性描述
拆分為Connection(連接器)/Query(查詢器)/Builder(SQL產生器)
- ##Connection連接器主要是用來連接資料庫的,可以使用不同的驅動程式連接不同類型的資料庫。
- Query查詢器則是用來執行sql語句,處理結果,對應到資料集中。
- Builder產生器則是用來把我們傳遞進去的條件、排序等轉換成sql語句。
toArray 将数据集的数据转为数组 merge 合并其它数据 diff 比较数组,返回差集 flip 交换数据中的键和值 intersect 比较数组,返回交集 keys 返回数据中的所有键名 pop 删除数据中的最后一个元素 shift 删除数据中的第一个元素 unshift 在数据开头插入一个元素 reduce 通过使用用户自定义函数,以字符串返回数组
tp中的模型
#定義模型檔案namespace app\index\model; use think\Model; // 设置类名 需要遵循转换规则,蛇形转为大驼峰 class User extends Model { // 设置主键字段名 protected $pk = 'u_id'; // 开启自动维护时间戳字段 (什么时间插入 什么时间更新) protected $autoWriteTimestamp = true; // 软删除 开启之后 删除数据只是用一个字段来标识为删除状态 方便查询、备份等 use SoftDelete; protected $deleteTime = 'delete_time'; }
使用模型
示範的程式碼是比較簡單的,實際上是可以很靈活的例如查詢用非主鍵的條件來查詢、查詢多行記錄等等<?php // *******快速查询、更新******* // 查询主键=1的数据 $user = User::get(1); // 然后更改它的name字段为新的值 $user->name = 'thinkphp'; // 保存,自己去数据库给我更新吧~ $user->save(); // *******插入新的一行数据******* // 新建一个对象(相对应的操作就是新创建一行) $user = new User; // 设置字段的值 有多个字段就多个设置 $user->name= 'thinkphp'; // 保存,自己去插入吧~ $user->save();
誤解
看了使用之後,很多初學者就開始寫程式碼了,然而卻使用了不太正確的方式。 ① model只當為Db類別用雖然model可以看成db類別的超集,但是如果只是把它當成簡單的DB類別使用,而不是使用ORM思想去編寫。那就沒什麼必要使用它了。 。 如果使用不對,不但不能提高效率,反而會影響自己。 (例如程式碼規格不統一、新增表格還要新增對應的模型檔案等等)程式碼示範:<?php $userModel = new User(); // 这里就相当于初始化Db类 $userOneInfo = $userModel->where(['u_id' => 1])->find(); $userTwoInfo = $userModel->where(['u_id' => 2])->find(); // ... 执行其他逻辑 比如判断上下级 操作权限等等 // 业务需求不只是读取用户的数据这么简单 // 还要扣除余额(就是更新数据库) $userOneRes = $userModel->where(['u_id' => 1])->update(['u_balance' => 'xxxx']); // ... 执行其他逻辑
<?php $userOneInfo = User::get(1); // 这里演示使用非主键条件查询的情况!! // 查询一个1用户的下级出来 $userTwoInfo = User::get(function($query){ $query->where(['p_uid' => 1]); }); // ... 执行其他逻辑 比如判断上下级 操作权限等等 // 业务需求不只是读取用户的数据这么简单 // 还要扣除余额(就是更新数据库) $userOneInfo->u_balance = 0; $userOneRes = $userOneInfo->save(); $userTwoInfo->u_balance = 0; $userTwoRes = $userTwoInfo->save(); // ... 执行其他逻辑
– 使用者表新增一條數據,另一個附屬表也要用該用戶id初始化一行。
– 自動轉換資料格式(儲存時間戳,查詢出來為2019-7-13 19:53:04格式)。
– 自動校驗數據,自動完成數據(操作的時候預設取操作人ip 權限等儲存)。
– 關聯查詢(TP中非常強大的功能,在模型中定義好與另一個模型的關係,例如店鋪表中的u_id 可以用來查詢出店舖所屬用戶的資訊 相當於店鋪模型和使用者模型的關聯 自動join資料合併回給我們使用)
# – 等等
總結
ORM是一種思想,概念,代表物件-關聯映射(資料庫-物件映射)ORM使得資料的操作抽象化為對物件的操作。要學會思想的改變,利用好框架提供的特性,寫出更好地程式碼。 TP中的模型非常強大,封裝了大量的邏輯。
【相關教學推薦:thinkphp框架】
以上是thinkphp中什麼是orm的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

執行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復 bug 和提供新功能。目前最新穩定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數。啟動 Web 伺服器。初始化 ThinkPHP 應用程式。存取 ThinkPHP 應用程式 URL 運行。

使用ORM可簡化PHP中的資料庫操作,它將物件對應到關聯式資料庫中。 Laravel中的EloquentORM允許使用物件導向的語法與資料庫交互,可透過定義模型類別、使用Eloquent方法或在實戰中建立部落格系統等方式來使用ORM。

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應用程序,ThinkPHP 可能更適合。

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產生應用程式碼。啟動應用程式並造訪 http://localhost:8000。

Hibernate多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有欄位。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似joined-subclass,但父類別表聯合所有子類別列。

ThinkPHP 是一款高效能的 PHP 框架,具備快取機制、程式碼最佳化、平行處理和資料庫最佳化等優勢。官方性能測試顯示,它每秒可處理超過 10,000 個請求,實際應用中被廣泛用於京東商城、攜程網等大型網站和企業系統。
