Trong Laravel, có ba loại mối quan hệ chính giữa các Model: One-to-One, One-to-Many và Many-to-Many.
- Mối quan hệ One-to-One
Mối quan hệ One-to-One xảy ra khi một bản ghi trong bảng A tương ứng với một bản ghi trong bảng B và ngược lại. Ví dụ, một user chỉ có một profile và một profile chỉ thuộc về một user. Để định nghĩa mối quan hệ này trong Laravel, bạn có thể sử dụng phương thức hasOne
và belongsTo
.
- Ví dụ: mối quan hệ One-to-One giữa User và Profile
Trong Model User:
public function profile() { return $this->hasOne(Profile::class); }
Trong Model Profile:
public function user() { return $this->belongsTo(User::class); }
- Mối quan hệ One-to-Many
Mối quan hệ One-to-Many xảy ra khi một bản ghi trong bảng A có thể tương ứng với nhiều bản ghi trong bảng B, nhưng một bản ghi trong bảng B chỉ tương ứng với một bản ghi trong bảng A. Ví dụ, một user có thể có nhiều bài viết và một bài viết chỉ thuộc về một user. Để định nghĩa mối quan hệ này trong Laravel, bạn có thể sử dụng phương thức hasMany
và belongsTo
.
- Ví dụ: mối quan hệ One-to-Many giữa User và Post
Trong Model User:
public function posts() { return $this->hasMany(Post::class); }
Trong Model Post:
public function user() { return $this->belongsTo(User::class); }
- Mối quan hệ Many-to-Many
Mối quan hệ Many-to-Many xảy ra khi mỗi bản ghi trong bảng A có thể tương ứng với nhiều bản ghi trong bảng B và ngược lại. Ví dụ, một user có thể theo dõi nhiều tags và một tag có thể được theo dõi bởi nhiều users. Để định nghĩa mối quan hệ này trong Laravel, bạn có thể sử dụng phương thức belongsToMany
.
- Ví dụ: mối quan hệ Many-to-Many giữa User và Tag
Trong Model User:
public function tags() { return $this->belongsToMany(Tag::class); }
Trong Model Tag:
public function users() { return $this->belongsToMany(User::class); }
Trong Laravel, các mối quan hệ này có thể được sử dụng để truy vấn và lấy dữ liệu liên quan đến các Model khác nhau một cách dễ dàng.