用品

使用 Laravel Eloquent ORM 的資料模型中的一對多關係

在資料建模中 Entity Relationship,當一個表格中的一筆記錄與另一個表格中的一筆或多筆記錄關聯時,就存在一對多關係。

基數表示實體之間關係的性質,即父實體可以多次出現子實體。

讓我們看看如何 laravel model 幫助我們管理一對多關係,簡化它們 query.

預計閱讀時間: 4 minuti

一對多關係

一對多關係不是資料本身的屬性,而是表之間關係的屬性。確保一個表中的每一行對應於另一表中的多個行。

它是兩個實體之間關聯的表示,其中一個實體(“一”側)可以連結到另一個實體(“多”側)的多個實例,但“多”側的每個實例只關聯到“一」方面的例子。

如果您想更深入研究與一對一關係的情況 Laravel model,然後閱讀這篇文章 如何處理資料模型中的一對一關係 Laravel Eloquent ORM

例如,讓我們考慮一個圖書館資料庫。您可能有一個名為「Publisher」的實體,另一個名為「Book」的實體。出版商和書籍之間的一對多關係意味著出版商可以出版多本圖書,但每本書只能由一個出版商出版。

Laravel Eloquent ORM 一對多關係

Laravel Eloquent 提供管理資料庫表之間關係的綜合方法。在本文中,我們將了解一對多關係以及如何設定它。

在一對多關係中,一個實體(我們稱之為 A)可以與另一個實體(我們稱之為 B)的多個實例關聯。但是,B 的每個實例僅屬於 A 的一個實例。每個候選人都屬於一個政黨,但政黨可以有多名候選人。

一對多關係設置

首先,讓我們創建我 模型 對於政黨和候選人。我們使用命令 artisan 來產生這些 模型:

php artisan make:model PoliticalParty
php artisan make:model Candidate

Defi現在讓我們來看看模型中的關係: model PoliticalParty, defi我們使用該方法來建立關係 hasMany

// app/Models/PoliticalParty.php
public function candidates()
{
    return $this->hasMany(Candidate::class);
}

model Candidate, 讓我們去 defi使用此方法建立反比關係 belongsTo

創新通訊
不要錯過有關創新的最重要新聞。 註冊以通過電子郵件接收它們。
// app/Models/Candidate.php
public function politicalParty()
{
    return $this->belongsTo(PoliticalParty::class);
}

的設定 Laravel 模板 為 defi如果 Candidates 表具有外鍵,則一對多關係的定義有效。外鍵必須是 defi指定一個命名字段 political_party_id,將候選人與其政黨聯繫起來。

一度 defi一旦關係完成,我們就可以使用以下的動態屬性來運作 Eloquent。例如,要檢索特定政黨的所有候選人,我們可以這樣寫:

// Find political party with id 1
$party = PoliticalParty::find(1);

// extract all candidates of political party where id is 1
$candidates = $party->candidates;

一對多 CRUD 範例

插入

為了為政黨增加新候選人,我們創建一個新實例 Candidate 我們將它與 PoliticalParty 合適的:

// candidate John White of Political Party with id 1
$candidate = new Candidate([
    'political_party_id' => 1,
    'name' => 'John White',
    // other candidate attributes
]);
$party->candidates()->save($candidate);
讀書

檢索特定政黨的候選人

// Get Party's candidates
$candidates = $party->candidates;

檢索特定候選人的政黨

// Get Party of a candidate
$party= $candidate->politicalParty;
更新

修改屬於某個政黨的特定候選人的數據

$candidate = Candidate::find(1);
$candidate->update([
    'name' => 'Updated Name',
    // other updated attributes
]);
刪除

從政黨中刪除候選人

$candidate = Candidate::find(1);
$candidate->delete();

利用一對多關係 Laravel Eloquent,我們可以跨相關表格有效地組織資料。對這些關係的充分理解使我們能夠創建健壯且高效的應用程式。

相關閱讀

Ercole Palmeri

創新通訊
不要錯過有關創新的最重要新聞。 註冊以通過電子郵件接收它們。
標籤: laravel教程