ItSolutionStuff.com

Laravel 10 One to Many Eloquent Relationship Tutorial

By Hardik Savani • November 5, 2023
Laravel

Hi,

Now, let's see an article of laravel 10 one to many relationship example. We will look at an example of laravel 10 hasmany relationship example. we will help you to give an example of has many relationship laravel 10. I would like to share with you laravel 10 one to many sync.

So in this tutorial, you can understand how to create migration with a foreign key schema for one to many relationships, use sync with a pivot table, create records, get all data, delete, update, and everything related to one to many relationships.

In this example, I will create a "posts" table and a "comments" table. both tables are connected with each other. now we will create one to many relationships with each other by using the laravel Eloquent Model. We will first create database migration, then model, retrieve records, and then how to create records too. So you can also see the database table structure on the below screen.

One to Many Relationship will use "hasMany()" and "belongsTo()" for relation.

Create Migrations:

Now we have to create migration of "posts" and "comments" table. we will also add foreign key with posts table. so let's create like as below:

posts table migration:

<?php

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

return new class extends Migration

{

/**

* Run the migrations.

*

* @return void

*/

public function up(): void

{

Schema::create('posts', function (Blueprint $table) {

$table->id();

$table->string("name");

$table->timestamps();

});

}

/**

* Reverse the migrations.

*

* @return void

*/

public function down(): void

{

Schema::dropIfExists('posts');

}

};

comments table migration:

<?php

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

return new class extends Migration

{

/**

* Run the migrations.

*

* @return void

*/

public function up(): void

{

Schema::create('comments', function (Blueprint $table) {

$table->id();

$table->foreignId('post_id')->constrained('posts');

$table->string("comment");

$table->timestamps();

});

}

/**

* Reverse the migrations.

*

* @return void

*/

public function down(): void

{

Schema::dropIfExists('comments');

}

};

Create Models:

Here, we will create Post and Comment table model. we will also use "hasMany()" and "belongsTo()" for relationship of both model.

app/Models/Post.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\Relations\HasMany;

class Post extends Model

{

use HasFactory;

/**

* Get the comments for the blog post.

*

* Syntax: return $this->hasMany(Comment::class, 'foreign_key', 'local_key');

*

* Example: return $this->hasMany(Comment::class, 'post_id', 'id');

*

*/

public function comments(): HasMany

{

return $this->hasMany(Comment::class);

}

}

app/Models/Comment.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Comment extends Model

{

use HasFactory;

/**

* Get the post that owns the comment.

*

* Syntax: return $this->belongsTo(Post::class, 'foreign_key', 'owner_key');

*

* Example: return $this->belongsTo(Post::class, 'post_id', 'id');

*

*/

public function post(): BelongsTo

{

return $this->belongsTo(Post::class);

}

}

Retrieve Records:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Post;

class PostController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index(Request $request)

{

$comments = Post::find(1)->comments;

dd($comments);

}

}

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Comment;

class PostController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index(Request $request)

{

$post = Comment::find(1)->post;

dd($post);

}

}

Create Records:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Post;

use App\Models\Comment;

class PostController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index(Request $request)

{

$post = Post::find(1);

$comment = new Comment;

$comment->comment = "Hi ItSolutionStuff.com";

$post = $post->comments()->save($comment);

}

}

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Post;

use App\Models\Comment;

class PostController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index(Request $request)

{

$post = Post::find(1);

$comment1 = new Comment;

$comment1->comment = "Hi ItSolutionStuff.com Comment 1";

$comment2 = new Comment;

$comment2->comment = "Hi ItSolutionStuff.com Comment 2";

$post = $post->comments()->saveMany([$comment1, $comment2]);

}

}

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Post;

use App\Models\Comment;

class PostController extends Controller

{

/**

* Write code on Method

*

* @return response()

*/

public function index(Request $request)

{

$comment = Comment::find(1);

$post = Post::find(2);

$comment->post()->associate($post)->save();

}

}

I hope you understand of one to many relationship...

Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

We Are Recommending You

How to Get Current Full URL in Laravel 10?

Read Now →

Laravel 10 Many to Many Eloquent Relationship Tutorial

Read Now →

Laravel 10 Has Many Through Relationship Example

Read Now →

Laravel 10 One to One Relationship Example

Read Now →

How to Generate QR Code in Laravel 10?

Read Now →

Laravel 10 Clear Cache of Route, View, Config, Event Commands

Read Now →

Laravel 10 Yajra Datatables Tutorial Example

Read Now →

Laravel 10 REST API Authentication using Sanctum Tutorial

Read Now →

Laravel 10 Ajax Image Upload Example

Read Now →

Laravel 10 Database Seeder Example Tutorial

Read Now →

Laravel 10 Authentication using Jetstream Tutorial

Read Now →

Laravel 10 Import Export Excel and CSV File Tutorial

Read Now →

Laravel 10 Vue JS Auth Scaffolding with Vite Tutorial

Read Now →

Laravel 10 Generate PDF File using DomPDF Example

Read Now →