Eloquent Relationships in Laravel: A Comprehensive Guide

Muhammad Hafizh Zikry
2 min readMar 2, 2025

--

Eloquent ORM (Object-Relational Mapping) in Laravel simplifies database operations by allowing developers to interact with database records as if they were objects. One of the key features of Eloquent is its ability to define relationships between database tables. These relationships allow you to efficiently manage and query related data.

In this article, we’ll explore the different types of relationships Eloquent supports and how to implement them.

1. One-to-One Relationship

A one-to-one relationship exists when one record in a table is associated with exactly one record in another table. For example, a User may have one Profile.

Implementation:

Database Tables:

  • users
  • profiles (with user_id as a foreign key)

Model:

class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class);
}
}

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

Usage:

// Fetch a user's profile
$user = User::find(1);
$profile = $user->profile;

// Fetch the user from a profile
$profile = Profile::find(1);
$user = $profile->user;

2. One-to-Many Relationship

A one-to-many relationship exists when one record in a table is associated with multiple records in another table. For example, a Post can have many Comments.

Implementation:

Database Tables:

  • posts
  • comments (with post_id as a foreign key)

Model:

class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}

class Comment extends Model
{
public function post()
{
return $this->belongsTo(Post::class);
}
}

Usage:

// Fetch a post's comments
$post = Post::find(1);
$comments = $post->comments;

// Fetch the post from a comment
$comment = Comment::find(1);
$post = $comment->post;

3. Many-to-Many Relationship

A many-to-many relationship exists when multiple records in a table are related to multiple records in another table. For example, Users can belong to many Roles, and Roles can belong to many Users.

Implementation:

Database Tables:

  • users
  • roles
  • role_user (pivot table with user_id and role_id)

Model:

class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}

class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}

Usage:

// Fetch a user's roles
$user = User::find(1);
$roles = $user->roles;

// Fetch users with a specific role
$role = Role::find(1);
$users = $role->users;

Conclusion

Eloquent ORM is a powerful tool in Laravel that makes working with databases a breeze. With its elegant syntax and intuitive approach, Eloquent lets developers focus on business logic without worrying about complex SQL queries. It simplifies database interactions, making everything feel more natural and easy to manage.

Reference

Laravel Documentation: https://laravel.com/docs/4.2/eloquent

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Muhammad Hafizh Zikry
Muhammad Hafizh Zikry

Written by Muhammad Hafizh Zikry

Hello there! I am Muhammad Hafizh Zikry, A fresh graduate in Computer Engineering. I am interested in a career and exploring things IT field

No responses yet

Write a response