未定义的属性:stdClass :: $ images

时间:2019-06-29 21:55:56

标签: php laravel laravel-5

在产品表中,我有一个图像行,该行存储每个产品的图像,并在每个产品的数据库["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 :(得分:0)

在控制器中,将其保存在Token token=g1.fromJson(data,Token.class);下:

image

但是在视图中,您正在从'image' => json_encode($image), 阅读:

images

所以我猜应该是@foreach($product->images as $image) 。您没有发布渲染视图的控制器,所以我在这里猜测。

答案 1 :(得分:0)

对于您遇到的错误,我认为这是因为您的产品表具有image作为属性,并且您正尝试使用images作为键来检索图像。

通过将图像存储为数组,您正在为应用程序实现不良的设计。

因为您有多个图像,所以使用product_id作为外键创建了一个新表images

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