Неопределенное свойство: stdClass :: $ images - PullRequest
1 голос
/ 30 июня 2019

В таблице продуктов у меня есть строка изображения, в которой хранятся изображения каждого продукта и выглядит так в базе данных ["4.jpg","5.jpg"] для каждого продукта.Теперь я хочу отобразить продукт и изображения, которые принадлежат этому продукту в представлении, но я застрял, он показывает ошибку Undefined property: stdClass::$images Как я могу это исправить?

Вот коды

представление лезвия

   @foreach($products as $product)
   @foreach($product->images as $image)
      <img src="{{url('images',$image->filepath)}}" alt="">
     @endforeach
     @endforeach

Контроллер

public function store(Request $request) 
{ 

$Input=$request->all();
$image=array();
if($files=$request->file('image')){
    foreach($files as $file){
        $name=$file->getClientOriginalName();
        $file->move('images',$name);
        $image[]=$name;

    }

} 
 product::create(array_merge($Input,
 [
'image' => json_encode($image),

])); 
return redirect()->back(); 

}

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

за ошибку, которую вы получаете, я думаю, это потому, что ваша таблица продуктов имеет image в качестве атрибута, и вы пытаетесь получить изображения, используя images в качестве ключа.

you 'Реализует плохой дизайн для вашего приложения, сохраняя изображения в виде массива.

, поскольку у вас есть несколько изображений, создайте новую таблицу images с product_id в качестве внешнего ключа.

Schema::create('images', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->dateTime('created_at');
            $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
        });

Теперь к вашим продуктам и модальным изображениям добавьте взаимосвязи.

/* add this on your Product.php modal */
public function images()
{
  return $this->hasMany('App\Image');
}
/* add this on your Image.php modal */
public function product()
{
   return $this->belongsTo('App\Product');
}

Теперь, чтобы получить все изображения, относящиеся к определенному продукту, вам нужно просто позвонить

@foreach($product->images() as $image)
      <img src="{{url('images',$image->filepath)}}" alt="">
@endforeach
0 голосов
/ 30 июня 2019

В контроллере вы сохраняете его под image:

'image' => json_encode($image),

но в представлении, которое вы читаете из images:

@foreach($product->images as $image)

так что я предполагаю, что должно быть $product->image. Вы не разместили контроллер, который отображает представление, поэтому я угадываю здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...