Featured image of post Day 15. Eloquent Relationships 一對一

Day 15. Eloquent Relationships 一對一

資源

Laravel7 30天: 目錄
專案連結: github - laravel7 之 30 天分享

前言

上一篇: Day 14. 中介層 Middleware
我們準備要來介紹 Laravel ORM 的 Relationships 了
這階段我會區分比較多天來分享

有哪些關聯?

先附上文件
以下是官方文件提供的所有關聯

  • Defining Relationships
    • One To One
    • One To Many
    • Many To Many
    • Defining Custom Intermediate Table Models
    • Has One Through
    • Has Many Through
  • Polymorphic Relationships
    • One To One
    • One To Many
    • Many To Many
    • Custom Polymorphic Types

先簡單介紹一下,還有我們不會全部都講

本次分享關聯名稱會分享?備註
One To One一對一
One To Many多對多
Many To Many多對多
Custom自定義關聯太深奧,原本的就滿夠用
Has One Through一對一(多一層)概念與一對一相同,就只是多一層
Has Many Through一對多(多一層)概念與一對多相同,就只是多一層
Polymorphic One To One多態的一對一
Polymorphic One To Many多態的一對多
Polymorphic Many To Many多態的多對多
Custom Polymorphic Types多態的自定義關聯太深奧,原本的就滿夠用

關聯表文章區

關聯名稱傳送門
One To One一對一Day 15. Eloquent Relationships 一對一
One To Many多對多Day 16. Eloquent Relationships 一對多
Many To Many多對多Day 17. Eloquent Relationships 多對多
Polymorphic One To One多態的一對一Day 18. Eloquent Polymorphic Relationships 多態的一對一
Polymorphic One To Many多態的一對多Day 19. Eloquent Polymorphic Relationships 多態的一對多
Polymorphic Many To Many多態的多對多Day 20. Eloquent Polymorphic Relationships 多態的多對多

One To One (一對一)

文件

表的關係

1
2
3
4
5
6
7
users
    id - integer
    name - string
 
user_profiles
    id - integer
    user_id integer

上次我們有建使用者基本資料 user_profiles他們關係可以參考圖片,
一個使用者只會對應到一個基本資料

Model 設定

所以我們可以去設定我們的 Model

app/Models/User.php

1
2
3
4
5
6
7
class User extends Authenticatable implements MustVerifyEmail
{
    public function profile()
    {
        return $this->hasOne(UserProfile::class);
    }
}

app/Models/UserProfile.php

1
2
3
4
5
6
7
class UserProfile extends Model
{
    public function user()
    {
        return $this->belongesTo(User::class);
    }
}

如何使用

1
2
$user = User::find(1);
$profile = $user->profile;

這樣就能成功取得使用者的基本資料了

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy