
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
- Seed database using SQL file in Laravel
- Laravel 10 starter app using breeze on live server
- Route group with URI prefix using middleware and route name prefixes
- Connection could not be established with host smtp.gmail.com :stream_socket_client(): unable to connect to tcp://smtp.gmail.com:587 (Connection refused)"
- Method Illuminate\Database\Eloquent\Collection::appends does not exist
- Class 'App\Http\Controllers\User' not found
- How to use bootstrap pagination in laravel 8
- Undefined property: stdClass::$title
- How to Access Array in blade laravel
- Input file with max size validation in laravel
- SQLSTATE[42000]: Syntax error or access violation: 1055
- Laravel onclick function not working
- External link not working in laravel blade
- Call to a member function pluck() on null
- Get laravel version
- Trying to access array offset on value of type null error in laravel
- Insert current date time in a column using Laravel
- How to create new user without form submission in laravel
- The use statement with non-compound name 'Auth' has no effect
- How to authenticate admin users in Laravel ?
- Page loader in laravel
- How to get single column value in laravel
- How to upload image in laravel 8
- Laravel pagination links with query string
- How to call controller function from view in Laravel