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
Advertisement
Answer
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