John Davidson

php - How to make a relationship between 3 models

0 comments
Message:


I have 3 model named User, Product and Review. I used one to many relationship between User and Product, on the other hand I use one to many between Product and Review.
I can find related product from user model and find related reviews from product model.


How can I find related product reviews from user model?



My Answer:
To find related product reviews from the User model, you can define a many-to-many relationship between the User and Review models through the Product model. Here's how you can do it:

1. Define the relationships in your models:

User model:
php
class User extends Model
{
public function products()
{
return $this->hasMany(Product::class);
}

public function reviews()
{
return $this->hasManyThrough(Review::class, Product::class);
}
}


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

public function reviews()
{
return $this->hasMany(Review::class);
}
}


Review model:
php
class Review extends Model
{
public function product()
{
return $this->belongsTo(Product::class);
}
}


2. Now you can access the related product reviews from the User model like this:

php
$user = User::find($userId);
$reviews = $user->reviews;


This will retrieve all the reviews related to the products of the user.

Rate this post

4 of 5 based on 7604 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us