简体   繁体   中英

Attempt to read property "id" on integer

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 [▼ // app\Http\Controllers\AdminController.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

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>

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM