目錄
創建模型和遷移文件
基本的增刪改查操作
使用關聯模型處理關係
使用查詢作用域簡化常用查詢
首頁 php框架 Laravel 如何在Laravel中使用雄辯的ORM?

如何在Laravel中使用雄辯的ORM?

Jul 30, 2025 am 03:12 AM

使用Eloquent ORM 寫Laravel 應用並不難,其核心在於將數據庫表映射為PHP 對象,減少原始SQL 的編寫。 1. 創建模型和遷移文件可通過Artisan 命令一鍵生成,並定義字段和表名映射。 2. 增刪改查操作簡潔,支持all、find、where 等方法進行查詢,通過new、save、delete 實現數據操作。 3. 關聯模型可處理一對多、多對一關係,在模型中定義posts 和user 方法實現關聯訪問。 4. 查詢作用域用於封裝常用查詢條件,如定義scopePublished 方法實現只查已發布文章,提升代碼復用性和可讀性。掌握這四個核心點,即可應對大部分Laravel 開發場景。

How to use Eloquent ORM in Laravel?

用Eloquent ORM 寫Laravel 應用,其實並不難。它本質上就是把數據庫表和PHP 對像做映射,讓你不用寫太多原始SQL,也能完成增刪改查等操作。只要你理解了模型和數據庫之間的關係,基本就能上手用了。

How to use Eloquent ORM in Laravel?

創建模型和遷移文件

在Laravel 中使用Eloquent 的第一步,是創建模型和對應的數據庫遷移文件。你可以用Artisan 命令一次性生成:

 php artisan make:model Post -mf

這樣會創建一個Post模型、一個遷移文件,還有一個工廠(用來生成測試數據)。遷移文件裡你只需要定義字段,比如:

How to use Eloquent ORM in Laravel?
 Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');
    $table->text('content');
    $table->timestamps();
});

執行遷移後,你的數據庫表就準備好了。模型默認會對應到表名的複數形式(比如Post對應posts ),如果你的表名不一致,可以在模型裡加一句:

 protected $table = 'my_posts';

基本的增刪改查操作

Eloquent 提供了非常簡潔的方法來做基礎查詢。比如你想查出所有文章:

How to use Eloquent ORM in Laravel?
 $posts = Post::all();

查某個ID 的文章:

 $post = Post::find(1);

帶條件查詢可以用where

 $posts = Post::where('title', 'like', '%Laravel%')->get();

新增數據也很簡單:

 $post = new Post();
$post->title = 'My First Post';
$post->content = 'Hello world!';
$post->save();

更新的話,先查出來再改字段保存:

 $post = Post::find(1);
$post->title = 'Updated Title';
$post->save();

刪除也是一樣:

 $post = Post::find(1);
$post->delete();

使用關聯模型處理關係

Eloquent 的一大優勢就是能輕鬆處理表之間的關聯關係。比如一個用戶有多個文章,你可以在User 模型裡定義:

 public function posts()
{
    return $this->hasMany(Post::class);
}

然後你就可以這樣取用戶的文章:

 $user = User::find(1);
foreach ($user->posts as $post) {
    echo $post->title;
}

反過來,如果文章屬於某個用戶,在Post 模型裡寫:

 public function user()
{
    return $this->belongsTo(User::class);
}

這樣你就能直接訪問$post->user->name這樣的數據了。

使用查詢作用域簡化常用查詢

如果你有一些常用的查詢條件,比如只查已發布的文章,可以定義一個本地作用域:

 public function scopePublished($query)
{
    return $query->where('published', true);
}

然後在使用時直接調用:

 $posts = Post::published()->get();

這樣代碼更清晰,也方便復用。

基本上就這些。 Eloquent 功能很多,但上面這些內容已經能覆蓋大部分日常開發需求了。只要模型和數據庫結構對得上,用起來還是很順手的。

以上是如何在Laravel中使用雄辯的ORM?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

如何在Laravel中實施推薦系統? 如何在Laravel中實施推薦系統? Aug 02, 2025 am 06:55 AM

創建referrals表記錄推薦關係,包含推薦人、被推薦人、推薦碼及使用時間;2.在User模型中定義belongsToMany和hasMany關係以管理推薦數據;3.用戶註冊時生成唯一推薦碼(可通過模型事件實現);4.註冊時通過查詢參數捕獲推薦碼,驗證後建立推薦關係並防止自薦;5.當被推薦用戶完成指定行為(如下單)時觸發獎勵機制;6.生成可分享的推薦鏈接,可使用Laravel簽名URL增強安全性;7.在儀表板展示推薦統計信息,如總推薦數和已轉化數;必須確保數據庫約束、會話或Cookie持久化、

如何在Laravel雄辯中使用訪問者和突變器? 如何在Laravel雄辯中使用訪問者和突變器? Aug 02, 2025 am 08:32 AM

conscortorSandMutatorsInlaravel'SeloquentormallowyOutoFormAtormanIpulateModeModeLattributesWhenRetRievorvingOrstTingValues.1.useaccessorstocustomizeattributeretributeretrieval,sueascaScapapitalizingfirst_namevirst_nameviagetFirstnameAtTeameAtTeameAtTeameAtTeameAtTeameAttribute($ value)($ value)

Laravel的存儲庫合同是什麼? Laravel的存儲庫合同是什麼? Aug 03, 2025 am 12:10 AM

Repository模式是一種設計模式,用於解耦業務邏輯與數據訪問邏輯。 1.它通過接口(Contract)定義數據訪問方法;2.具體操作由Repository類實現;3.控制器通過依賴注入使用接口,不直接接觸數據源;4.優勢包括代碼整潔、可測試性強、便於維護和團隊協作;5.適用於中大型項目,小型項目可直接使用模型。

如何在Laravel雄辯中使用子征服? 如何在Laravel雄辯中使用子征服? Aug 05, 2025 am 07:53 AM

laravelleloquentsuportsubqueriesInSelect,從哪裡,andorderbyClauses啟用Feflexibledataretievalwithoutrawsql; 1.UseselectSub()toaddcompentedColumnSlumnsLikePostCountCountCountCountCountPeruser; 2.Usefromsub; 2.usefromsub; 2.Usefromsub orclosolusoblesoblesoboledInfom()

如何與Laravel創建一個寧靜的API? 如何與Laravel創建一個寧靜的API? Aug 02, 2025 pm 12:31 PM

創建Laravel項目並配置數據庫環境;2.使用Artisan生成模型、遷移和控制器;3.在api.php中定義API資源路由;4.實現控制器中的增刪改查方法並使用請求驗證;5.安裝LaravelSanctum實現API認證並保護路由;6.統一JSON響應格式並處理錯誤;7.使用Postman等工具測試API,最終得到一個功能完整、可擴展的RESTfulAPI。

如何將Laravel品脫用於代碼樣式? 如何將Laravel品脫用於代碼樣式? Aug 02, 2025 pm 01:35 PM

laravelpintisazero-configurationCodestyLefixerthatautopationallicationalforcesconsistentphpCodingStandards,尤其是InlaravelApplications.2.itcomespre-Installedwithlaravel9和Canbeinbeinstalledwithlaravel9和CanbeinStalledInstalledInStallerStallEdinerSornOlderVersionsOrnOlderVersionsOrnonOrlavelProjectSssssSssSerserComerquropoSerrequire-DevlarareRequire-DevllalRarav

如何與Laravel從頭開始建立博客? 如何與Laravel從頭開始建立博客? Aug 02, 2025 am 10:16 AM

安裝並創建Laravel項目,使用composercreate-project命令初始化blog項目並啟動開發服務器;2.配置數據庫,在.env文件中設置MySQL連接信息並創建blog數據庫;3.創建Post模型和遷移文件,定義title、content、slug、is_published等字段並執行遷移;4.生成PostController資源控制器,在index方法中查詢已發布的文章並分頁顯示;5.使用Blade模板引擎創建佈局和視圖文件,包括文章列表和詳情頁面;6.在web.php中註冊

如何通過Laravel收銀員處理重複的付款? 如何通過Laravel收銀員處理重複的付款? Aug 06, 2025 pm 01:38 PM

InstallLaravelCashierviaComposerandconfiguremigrationandBillabletrait.2.CreatesubscriptionplansinStripeDashboardandnoteplanIDs.3.CollectpaymentmethodusingStripeCheckoutandstoreitviasetupintent.4.SubscribeusertoaplanusingnewSubscription()anddefaultpay

See all articles