S.m. Abdul Wassae
S.m. Abdul Wassae

Reputation: 51

laravel selected value after get collection and modified

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

Answers (1)

Abdulla Nilam
Abdulla Nilam

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

Related Questions