在产品表中,我有一个图像行,该行存储每个产品的图像,并在每个产品的数据库["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();
}
将提供任何帮助。
答案 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