skip to Main Content

I am new in laravel and working on E-Commerce Project.
Plz Help me!

I am trying to get data from the database but I can’t.

My function

public function add_product_attributes($id)
{


    $attributes  =  Product::where(['id' => $id])->with('attributes')->first();
    $attributes_data = $attributes->toArray();
    dd($attributes_data); //here i can see my required data 

   $product_attributes = product::find($id);
    // dd($product_attributess);
    return view('admin.add_product_attributes', compact('product_attributes', 'attributes_data'));
}

// I want to get multiple records like SKU, Color, Size, etc

//Here this is a record that I can see using dd($attributes_data)

array:14 [▼ // appHttpControllersAdminController.php:228
  "id" => 2
  "title" => "shirt"
  "category_id" => 1
  "price" => "12$"
  "dis_price" => "1000$"
  "quantity" => "1"
  "product_code" => "002"
  "product_color" => "blue"
  "short_description" => "test"
  "long_description" => "test"
  "image" => "1670482697.raza.jpeg"
  "created_at" => "2022-12-08T06:58:17.000000Z"
  "updated_at" => "2022-12-08T06:58:17.000000Z"
  "attributes" => array:4 [▼
    0 => array:8 [▶]
    1 => array:8 [▶]
    2 => array:8 [▶]
    3 => array:8 [▶]
  ]
]

At this point, I think everything is fine

//I can see my required data but I can't show that in the view file in foreach loop. It gives me an error Attempt to read property "id" and all data like category_id, SKU etc on an integer
 Here I am pasting the view file  details

                        @foreach ($attributes_data as $data)
                            
                        <tr>
                            <th scope="row">{{$data->id}}</th>
                            <td>{{$data->category_id}}</td>
                            <td>{{$data->product_id}}</td>
                            <td>{{$data->sku}}</td>
                            <td>{{$data->size}}</td>
                            <td>{{$data->price}}</td>
                            <td>{{$data->stock}}</td>
                      </tr>
                        @endforeach`


I want to resolve this error and show all attributes of my single product.
plz help me I will be very thankful to you

2

Answers


  1. You’re transforming your attributes to an array. But you’re fetching only one record so you don’t need to wrap it in foreach loop here. You can simply do this.

      <tr>
        <th scope="row">{{$attributes_data['id']}}</th>
        <td>{{$attributes_data['category_id']}}</td>
        <td>{{$attributes_data['product_id']}}</td>
        <td>....</td>
      </tr>
    
    Login or Signup to reply.
  2. If I understood the purpose of your codes well
    You want to access a product + its attributes in the view

    I tried to make your code a little cleaner and more understandable
    (I hope I understand your question correctly so that my answer is useful for us)

    public function add_product_attributes($id)
    {
        $product  =  Product::where('id' , $id)->with('attributes')->first();
        $attributes = $product->attributes;
    
        return view('admin.add_product_attributes', compact('product', 'attributes' ));
    }
    

    view

    @foreach ($attributes as $attribute)
        <tr>
            <th scope="row">{{attribute->id}}</th>
            // ...
      </tr>
    @endforeach
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search