Laravel Eloquent is the ORM (Object-Relational Mapping) implementation included in the Laravel PHP framework. It provides a simple and elegant way to interact with databases using an object-oriented syntax.
Also Read: Laravel Livewire comments
Introduction to Laravel Polymorphic Relations
A Polymorphic relationship in Laravel allows the child model to belong to more than one type of model using a single association.In other words, a single model can be related to multiple models on a single relationship.
Here's an example of a polymorphic One to Many relationship in Laravel, which is most commonly used in our projects too.
// Define the Image model
class Image extends Model
{
public function imageable()
{
return $this->morphTo();
}
}
// Define the Product model
class Product extends Model
{
public function images()
{
return $this->morphMany(Image::class, 'imageable');
}
}
// Define the User model
class User extends Model
{
public function images()
{
return $this->morphMany(Image::class, 'imageable');
}
}
In this example, the Image model can be related to either a Product
or a User
model. This is accomplished by defining a morphTo
relationship in the Image
model and a morphMany
relationship in both the Product
and User
models. This type of relationship can be useful when you have a model that needs to be associated with multiple other models, but you don't want to create separate relationships for each model.
Also Read: Laravel Deployments using Envoy
Now in order to retrieve the images from User
Model and Product
Model
//user model and get images
$user = App\Models\User::find(1);
foreach ($user->images as $image) {
//do something with the image now.
}
//product model and get images
$product = App\Models\Product::find(1);
foreach ($product->images as $image) {
//do something with the image now.
}