laravel orm是什麼
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中文網其他相關文章!

熱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)

在dcatadmin(laravel-admin)中如何實現自定義點擊添加數據的表格功能在使用dcat...

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

Laravel框架中Redis連接的共享與select方法的影響在使用Laravel框架和Redis時,開發者可能會遇到一個問題:通過配置...

在Laravel多租戶擴展包stancl/tenancy中自定義租戶數據庫連接使用Laravel多租戶擴展包stancl/tenancy構建多租戶應用時,...

LaravelEloquent模型檢索:輕鬆獲取數據庫數據EloquentORM提供了簡潔易懂的方式來操作數據庫。本文將詳細介紹各種Eloquent模型檢索技巧,助您高效地從數據庫中獲取數據。 1.獲取所有記錄使用all()方法可以獲取數據庫表中的所有記錄:useApp\Models\Post;$posts=Post::all();這將返回一個集合(Collection)。您可以使用foreach循環或其他集合方法訪問數據:foreach($postsas$post){echo$post->

在Laravel6項目中如何檢查Redis連接的有效性是一個常見的問題,特別是在項目依賴於Redis進行業務處理時。以下是...

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

Laravel數據庫遷移過程中出現類重複定義問題在使用Laravel框架進行數據庫遷移時,開發者可能會遇到“類已使用�...
