DEV Community

Cover image for Laravel Relationships
Code Of Accuracy
Code Of Accuracy

Posted on

Laravel Relationships

Laravel Eloquent provides an easy-to-use and expressive way to define relationships between database tables. There are several types of relationships that can be defined in Eloquent, including:

1. One-to-One Relationship:
In a one-to-one relationship, a record in the parent table (e.g. users) can be associated with only one record in the child table (e.g. profiles), and vice versa. Here's an example:

// User Model class User extends Model { public function profile() { return $this->hasOne(Profile::class); } } // Profile Model class Profile extends Model { public function user() { return $this->belongsTo(User::class); } } 
Enter fullscreen mode Exit fullscreen mode

In this example, the User model has a hasOne relationship with the Profile model, and the Profile model has a belongsTo relationship with the User model. To retrieve the profile of a user, you can use:

$user = User::find(1); $profile = $user->profile; 
Enter fullscreen mode Exit fullscreen mode

2. One-to-Many Relationship:
In a one-to-many relationship, a record in the parent table (e.g. posts) can be associated with multiple records in the child table (e.g. comments), but a record in the child table can be associated with only one record in the parent table. Here's an example:

// Post Model class Post extends Model { public function comments() { return $this->hasMany(Comment::class); } } // Comment Model class Comment extends Model { public function post() { return $this->belongsTo(Post::class); } } 
Enter fullscreen mode Exit fullscreen mode

In this example, the Post model has a hasMany relationship with the Comment model, and the Comment model has a belongsTo relationship with the Post model. To retrieve all comments of a post, you can use:

$post = Post::find(1); $comments = $post->comments; 
Enter fullscreen mode Exit fullscreen mode

3. Many-to-Many Relationship:
In a many-to-many relationship, a record in one table (e.g. users) can be associated with multiple records in another table (e.g. roles), and vice versa. Here's an example:

// User Model class User extends Model { public function roles() { return $this->belongsToMany(Role::class); } } // Role Model class Role extends Model { public function users() { return $this->belongsToMany(User::class); } } 
Enter fullscreen mode Exit fullscreen mode

In this example, the User model has a belongsToMany relationship with the Role model, and the Role model has a belongsToMany relationship with the User model. To retrieve all roles of a user, you can use:

$user = User::find(1); $roles = $user->roles; 
Enter fullscreen mode Exit fullscreen mode

That's it! We've successfully completed basic relationships, for advance level we will meet soon.

Top comments (0)