Reputation: 51
I have product model linked with discount and category;
$products = Product::with('discounts')->with('categories')->get();
I then manipulate products based on category
foreach ($products as $item) {
if (category_condition) {
$item['new_prod_attribute'] = 'data_cat';
}
if (discount_condition) {
$item['new_prod_attribute1'] = 'data_disc';
}
}
Now I want to get some selective data like: product->id,name,new_prod_attribute,new_prod_attribute1; category->name; discount->offer_name as subset_data
;
Upvotes: 0
Views: 31
Reputation: 38652
You can use map
$productData = $products->map(function ($product) {
$data = [
'id' => $product->id,
'name' => $product->name,
...
'category_name' => $product->categories->name,
];
if (category_condition) {
$data['new_prod_attribute'] = 'data_cat';
}
if (discount_condition) {
$data['new_prod_attribute1'] = 'data_disc';
}
return $data;
});
When you dump $productData
you've all the data
Upvotes: 1