Manage Your VPS Server without Touching Command Line

Register now and Redeem Credits

Redeem Code: TECHVBLOGS

Laravel One of Many Eloquent Relationship Example

  Suresh Ramani   Laravel   2 months ago
Laravel One of Many Eloquent Relationship Example - TechvBlogs

A new one of many Eloquent relationships is coming to Laravel 8.42 thanks to a PR contribution by Lennart Carstens-Behrens along with collaboration from Taylor Otwell is released some days ago. This one of many relationships is very useful.

So what is one of many relationships is? The one-of-many relationship creates a one-to-one association from a one-to-many relationship. This quote is not enough to define this relationship. So let's see an example to understand.

Many times you will see that a model may have many related models, yet you want to easily retrieve the "latest" or "oldest" related model of the relationship. For example, a User model may be related to many BrowserHistory models.

You may accomplish this using the hasOne relationship type combined with the ofMany methods:

// Get Latest Browser History

public function latestBrowserHistory(){
    return $this->hasOne(BrowserHistory::class)->latestOfMany();
}

Read Also:  API Authentication using Laravel Sanctum

You may define a method to retrieve the "oldest", or first, related model of a relationship:

// Get Oldest Browser History

public function oldestBrowserHistory(){
    return $this->hasOne(BrowserHistory::class)->oldestOfMany();
}

Here in this query by default, the latestOfMany and oldestOfMany methods will retrieve the latest or oldest related model based on the model's primary key, which must be sortable.

This new eloquent relationship ofMany the method accepts the sortable column as its first argument and which aggregate function (min or max) to apply when querying for the related model:

public function highestPriceProduct(){
    return $this->hasOne(Product::class)->ofMany('price','max');
}

Thank you for reading this blog.

Read Also:  Firebase Push Notification Laravel Tutorial

If you have any queries or doubts about this topic please feel free to contact us. We will try to reach you.

Tags:
Laravel PHP

Suresh Ramani - Author - TechvBlogs
Suresh Ramani
Laravel & Vue.js Developer
Advertise Here