Skip to content
Readerstacks logo Readerstacks
  • Home
  • Softwares
  • Angular
  • Php
  • Laravel
  • Flutter
Readerstacks logo
Readerstacks
Laravel hasMany

How to Use hasMany Relationship in Laravel with Example ?

Aman Jain, February 27, 2022November 10, 2023

Laravel hasMany relationship is used to create the relation between two tables. hasMany means create the relation one to Many. For example if a article have comments and we wanted to get all comments of the article then we can use hasMany relationship .


Database Relations are used to create the relations between the tables so that we can manage the transactions in a better way. Similar to database relations laravel itself provides relationships out of the box to create the relation between tables in the application layer.

Laravel relations do not create relations in database it creates relation in application layer and produces the output.

Laravel eloquent hasMany accepts 3 parameters first as model name, second is optional foreign_key and third is optional local_key .

Here is the syntax

<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
 
class Parent extends Model
{
     
    public function child()
    {
        return $this->hasmany(child::class,'foreign_key','local_key');
    }
}

In the above syntax we have used belongsTo method with 3 parameters so here Child::class is the name of Model which we want to relate, foreign_key means column name of child table and local_key means column name of own table.

Laravel do not create join query internally but it creates a separate query and then attach the data.

So we can use it as below:

Parent::with('child')->get();

This will return all the articles along with comments.

Let’s understand laravel hasMany in eloquent query with example

Use of hasMany to method in article comments table

Suppose we have two tables one is article and another one is comments so comments table contains comments of articles table so here is the schema of both tables and you can also read How to make database connection in Laravel 8 ?

Screenshot 2022 02 27 at 10.53.34 AM
Articles table
Screenshot 2022 02 27 at 10.55.01 AM
Comments table

Step 1 : Create article and comment model

Create two model in app\Models folder, one is article and other is comment

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    use HasFactory;
}

Comment Model:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    use HasFactory;
}

Step 2 : Create hasMany relation in Article model

Now create hasMany relation in Article class so that we can fetch comment detail using article_id

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    use HasFactory;

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

In the above code we have created a method comments and used hasMany method to create the relation with Comment Model.

Laravel assumes here table name is comment and foreign key is comments table article_id and local key is articles table id. If you have different columns name to map then you can change.

Step 3 : Use the relationship in controller

We have created the relation now we need to access the model and its relations so lets create a controller and import the necessary classes

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Article;


class ArticleController extends Controller
{

    public function index(Request $request)
    {

        $article=Article::with("comments")->first();
        dump($article);

        dump($article->comments);

    }
}

Step 4 : Create Route

Lastly create the route in web.php

Route::get('/articles',[ArticleController::class, 'index']); 

Related

Php Laravel hasManylaravelmysqlrelation

Post navigation

Previous post
Next post

Related Posts

How to increase maximum file upload size in php ?

August 24, 2021August 24, 2021

Php is the most used language in web. sometimes it required to upload the files which is greater then 2 mb. In php default upload size is 2 mb and if we wanted to increase it then we have multiple ways to change the size of uploading. 1. Change from…

Read More
Php Laravel Custom Facade with example

How to create a custom facade with example in Laravel 8 ?

December 22, 2021January 10, 2022

In Laravel there several facades to use like DB, URL, Validator ,Request etc. Facades are used to use the class methods statically using the application service container. In this article we will learn to create our own facades with service container. Let’s start with step by step For a better…

Read More
Php How to Implement JWT Auth in Laravel

How to Implement JWT Auth in Laravel?

July 3, 2022July 3, 2022

In this article we will learn to implement JWT Auth in laravel. JWT (Json Web Token) is used to create the authentication between two parties client and server that means it creates a secure information transactions between two parties. In the process of php-open-source-saver/jwt-auth token it creates a token claims…

Read More

Aman Jain
Aman Jain

With years of hands-on experience in the realm of web and mobile development, they have honed their skills in various technologies, including Laravel, PHP CodeIgniter, mobile app development, web app development, Flutter, React, JavaScript, Angular, Devops and so much more. Their proficiency extends to building robust REST APIs, AWS Code scaling, and optimization, ensuring that your applications run seamlessly on the cloud.

Categories

  • Angular
  • CSS
  • Dart
  • Devops
  • Flutter
  • HTML
  • Javascript
  • jQuery
  • Laravel
  • Laravel 10
  • Laravel 11
  • Laravel 9
  • Mysql
  • Php
  • Softwares
  • Ubuntu
  • Uncategorized

Archives

  • May 2025
  • April 2025
  • October 2024
  • July 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • July 2023
  • March 2023
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Recent Posts

  • Understanding High Vulnerabilities: A Deep Dive into Recent Security Concerns
  • Understanding High Vulnerabilities in Software: A Week of Insights
  • Blocking Spam Requests with LaraGuard IP: A Comprehensive Guide
  • Enhancing API Development with Laravel API Kit
  • Exploring the Future of Web Development: Insights from Milana Cap
©2023 Readerstacks | Design and Developed by Readerstacks
Go to mobile version