laravel中,orm全名為“Object-Relational Mapping”,意思是“物件關係映射”,它的作用是在關係型資料庫和業務實體物件之間作一個映射;這樣在操作業務物件時,不需和複雜的SQL語句打交道,只需要操作物件的屬性和方法。
本教學操作環境:windows7系統、Laravel6版、Dell G3電腦。
什麼叫ORM
ORM,全名為Object-Relational Mapping(物件關聯映射),它的作用是在關係型資料庫和業務實體物件之間作一個映射,這樣,我們在操作特定的業務物件時,就不需要再去和複雜的SQL語句打交道,只需簡單的操作物件的屬性和方法即可。
ORM 實作方式
兩個最常見的實作方式是ActiveRecord 和DataMapper (laravel 中使用的是前者)
#ActiveRecord(非常流行) 中模型與資料表一一對應,
DataMapper 中模型與資料表是完全分離的。
Laravel 的Eloquent ORM 使用ActiveRecord 實作方式,每一個Eloquent 模型類別對應著資料庫中的一張表,我們透過呼叫模型類別的對應方法來實現對資料庫的增刪改查。
理解兩個魔法函數__call () 和__callStatic ()
class Test{ //动态调用的时候 没有找到此函数 则执行__call() 方法 public function __call($method, $parameters){ echo 22222222222; return (new Rest)->$method(...$parameters); } //静态调用的时候 没有找到此函数 则执行__callStatic()方法 public static function __callStatic($method, $parameters){ echo 1111111111; return (new static)->$method(...$parameters); } } class Rest{ public function foo($name , $age){ echo 333; dump($name,$age); } } //先调用了__callStatic(), 在调用__call(), 然后调用 foo(); Test::foo('张三',17); //只调用了 __call(), 然后调用 foo(); (new Test())->foo('李四',16);die;
理解了前面兩個魔法函數對於laravel Eloqument ORM 中的難點也理解了,我們來看Model 中的源碼
/** * Handle dynamic method calls into the model. * * @param string $method * @param array $parameters * @return mixed */public function __call($method, $parameters) { if (in_array($method, ['increment', 'decrement'])) { return $this->$method(...$parameters); } return $this->newQuery()->$method(...$parameters); } /** * Handle dynamic static method calls into the method. * * @param string $method * @param array $parameters * @return mixed */public static function __callStatic($method, $parameters) { return (new static)->$method(...$parameters); }
new static 回傳的是呼叫者的實例, new self () 傳回的是自身實例
使用eloqument 查詢的時候
$list = Politician::where('party_id', 1)->count();
where 方法不在Model 中會先執行callStatic()函數取得App\Models\Politician 實例,再執行call () , 在$this->newQuery () 返回實例中尋找where () count()等方法。
細看一下 newQuery () 方法 這裡面回傳的實例。理解了這兩個魔術函數 對 laravel 中 orm 的實現的困難就攻克了。
laravel 中的查詢建構器
$list = DB::table('categoty')->get();
Eloquent ORM 其實是對 查詢建構進行了一次封裝,可以更方便的去操作。查詢建構器的源碼大家有興趣的話可以看一看
【相關推薦:laravel影片教學】
以上是laravel orm是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

遷移在laravelmanagedatabaseschema,同時shandledatainterAction.1)遷移術語,允許創造,修改和deletionoftables

SoftDeletsinlaraveRareBetterTernaverainteraldatialdataAndRecoverability,而骨質骨骼驗證了forderableford.fordableablefordataminimization和Privacy.1)softerdeleteseThesoftDeletDeletEstrait,允許restrestoratorralityandaudtrails和mayincroredatabasesize.2)物理

softDeletsinlesInLaravelAlavareAfeAtarowSyOutOmarkRecordsAsdeletedwithOutreMovingThemfromthedataBase.toimplementsoftsoftdeletes:1)addtheSoftDeletDeleteStraittRaittRaiteRemodoyouRmodeNClandInclandInclandEncludEthedeletdelet_atcolumted_atcolumn.2)

laravelmigrationsareefectectivectiveDueTotheirversionControlandRoranderibalsible,slepliningDatabasemagementInwebDevelopment.1)heSpapsulatesCheMachangeNphpClasses,允許easyerollbacks

LaravelMigrationsareArareBestWhenFollowingTheSepractices:1)用戶清除,描述性formigrations,例如'addemailtouserstable'.2)ensuremigrationsareReereSareReverSiblewitha'down'method.3)考慮到the the the the the the the the the the the the the the broaderimptactondataintegnegrityAndegrityAndegrinegrityAndertality.4)optimizeperformanceb

使用Laravel和Vue.js可以構建單頁面應用(SPA)。 1)在Laravel中定義API路由和控制器,處理數據邏輯。 2)在Vue.js中創建組件化前端,實現用戶界面和數據交互。 3)配置CORS和使用axios進行數據交互。 4)利用VueRouter實現路由管理,提升用戶體驗。

在Laravel中創建自定義輔助函數的步驟是:1.在composer.json中添加自動加載配置;2.運行composerdump-autoload更新自動加載器;3.在app/Helpers目錄下創建並定義函數。這些函數能簡化代碼,提高可讀性和可維護性,但需注意命名衝突和測試性。

在Laravel中處理數據庫事務時,應使用DB::transaction方法,並註意以下要點:1.使用lockForUpdate()鎖定記錄;2.通過try-catch塊處理異常,並在需要時手動回滾或提交事務;3.考慮事務的性能,縮短執行時間;4.避免死鎖,可使用attempts參數重試事務。這段摘要完整地概括瞭如何在Laravel中優雅地處理事務,並提煉了文章中的核心要點和最佳實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。