Menu

Laravel Eloquent Relationships (Clean Rewrite)

Laravel Eloquent Relationships (Clean Rewrite)

Laravel Eloquent Relationships (Clean Rewrite)

🔹 1️⃣ One-to-One

👉 Ek record ka sirf ek related record

Example: User → Profile

// User.php
class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class, 'user_id', 'id');
}
}
// Profile.php
class Profile extends Model
{
public function user()
{
return $this->belongsTo(User::class, 'user_id', 'id');
}
}

🔹 2️⃣ One-to-Many

👉 Ek record ke multiple related records

Example: User → Tasks

// User.php
class User extends Model
{
public function tasks()
{
return $this->hasMany(TaskModel::class, 'UserID', 'id');
}
}
// TaskModel.php
class TaskModel extends Model
{
public function user()
{
return $this->belongsTo(User::class, 'UserID', 'id');
}
}

🔹 3️⃣ Many-to-Many

👉 Multiple records ek-dusre se relate

👉 Pivot table required

Example: Users ↔ Roles

// User.php
class User extends Model
{
public function roles()
{
return $this->belongsToMany(
Role::class,
'role_user',
'user_id',
'role_id'
);
}
}
// Role.php
class Role extends Model
{
public function users()
{
return $this->belongsToMany(
User::class,
'role_user',
'role_id',
'user_id'
);
}
}

🔹 4️⃣ Has One Through

👉 Intermediate table ke through ek related record

Example: Country → User → Passport

// Country.php
class Country extends Model
{
public function passport()
{
return $this->hasOneThrough(
Passport::class,
User::class,
'country_id', // Foreign key on users table
'user_id', // Foreign key on passports table
'id', // Local key on countries table
'id' // Local key on users table
);
}
}

🔹 5️⃣ Has Many Through

👉 Intermediate table ke through multiple records

Example: Country → Users → Posts

// Country.php
class Country extends Model
{
public function posts()
{
return $this->hasManyThrough(
Post::class,
User::class,
'country_id', // Foreign key on users table
'user_id', // Foreign key on posts table
'id', // Local key on countries table
'id' // Local key on users table
);
}
}

🔹 6️⃣ Polymorphic Relationships

👉 Ek model multiple models ke saath relate ho sakta hai

Example: Comments → Posts / Videos

// Comment.php
class Comment extends Model
{
public function commentable()
{
return $this->morphTo();
}
}
// Post.php
class Post extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
// Video.php
class Video extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}

🧠 PART 2: Quick Summary (Same Level as JOINs)

One-to-One → ek record = ek related record

One-to-Many → ek record = multiple related records

Many-to-Many → dono side multiple, pivot table required

Has One Through → intermediate ke through single relation

Has Many Through → intermediate ke through multiple relations

Polymorphic → ek model, multiple parent types

Flow-chart laravel

Contact