Retrieve count of nested relationship data in Laravel
Retrieve count of nested relationship data in Laravel
We will use programming in this lesson to attempt to solve the "Retrieve count of nested relationship data in Laravel".
Sometimes you have to retrieve count of nested relationship data in Laravel. In my case, I have to get the number of orders placed for every product, this code snippet help me to find out the solution.-
Return products with number of orders using count of nested relationship data
$products = Product::all(); $productsArr = $products->map(function (Product $product){ $productObj = $product->toArray(); $productObj['orders_count'] = $product->orders()->count(); return $productObj; });
This code snippet will help you to get the total number of orders (records of relationship data) with Product. In this code there is a map method which get the count of orders form the relationship while iterating product model data.
You have to create the orders method in Product model.
app\Models\Product.php
public function orders(){ return $this->hasMany('App\Models\Order'); }
-
Return products with number of orders using eager load relationship
$products = Product::with('orders')->get(); $productsArr = $products->map(function (Product $product){ $productObj = $product->toArray(); $productObj['orders_count'] = $product->orders->count(); return $productObj; });
It helps you to get the total number of orders (records of relationship data) with Product. In this code there is a map method which get the count of orders form the relationship while iterating products.
Here we have use eager load relationship which helps you to reduce the number of query while getting data from table.
-
Return products with number of orders using withCount() function
$products = Product::withCount('orders')->get(); $productsArr = $products->map(function (Product $product){ $productObj = $product->toArray(); $productObj['orders_count'] = $product ->getAttribute('orders_count'); return $productObj; });
This code snippet will help you to get the total number of orders (records of relationship data) with product. There is a map method which get the count of orders form the relationship data while iterating products.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
Don't forget to share this article! Help us spread the word by clicking the share button below.
We appreciate your support and are committed to providing you valuable and informative content.
We are thankful for your never ending support.
Random Code Snippet Queries: Laravel
- Laravel 5.4 save data to database
- How to pass external link in laravel blade to anchor tag
- Laravel route parameter
- Laravel create default admin user
- Get duplicate records in laravel
- Class 'App\Http\Controllers\User' not found
- How to get last record from object collection in laravel
- Display first n record from collection in laravel view
- How to insert value to additional columns in pivot table in laravel
- Return redirect laravel not working
- Get products with number of orders in Laravel
- Symlink(): No such file or directory
- SQLSTATE[42000]: Syntax error or access violation: 1091 Can't DROP 'posts_user_id_foreign'; check that column/key exists
- Composer create project laravel/laravel example app
- How to get specific columns using Laravel eloquent methods
- Insert Comma Separated Values in laravel
- Ajax GET request in laravel
- PhpMyAdmin - Error The mysqli extension is missing
- Shorter syntax for whereHas with call back function in laravel
- How to get the id of last record from collection object in laravel view
- Redirect to previous page or url in laravel
- How to use more than one query scope in Laravel
- How to create pivot table in laravel using migration
- Laravel recursive function in controller
- How to check email is valid or not in Laravel