在网格中显示数据库中的图像 - laravel

时间:2018-02-20 10:47:30

标签: php mysql laravel

我的数据库中有我的图像path,现在,我正在尝试将图像放入我的html网格中。但是当我尝试获取图像时,我收到错误

  

此集合实例上不存在属性[path]。

但是,我的数据库中的表中有路径属性。是不是我的模特出错了?我的模型似乎对我而言。无论如何,我在这里做什么,拜托?

感谢您的关注

HTML

<figure>
    <div class="snipcart-item block">
       <div class="snipcart-thumb">
           <a  href="{{ route('product.view', $product->slug)}}"><img src="{{$product->images->path}}" alt=" " class="img-responsive" /></a>
           <p>{{$product->name}}</p>
           <h4>GH₵ {{ number_format($product->price,2) }} </h4>
       </div>
       <div class="snipcart-details top_brand_home_details">
         <form action="#" method="post">
           <fieldset>

           </fieldset>
         </form>
       </div>
    </div>
</figure>

图片

public function products()
{
     return $this->belongsTo(Product::class);
}

Product_images

public function images()
{
     return $this->hasMany(Image::class);
}

6 个答案:

答案 0 :(得分:2)

你需要制作一个foreach,因为它会给你一个集合。

因此,尝试将其显示为:

@foreach($product->images as $image) 
   @if($image->path)
     <img src="{{ $image->path }}" alt=" " class="img-responsive" />
   @else
      <p>No image to display!</p>
   @endif
@endforeach

希望这会对你有帮助!

答案 1 :(得分:1)

这是因为产品型号有很多图像。 为了达到路径属性,您应该这样做:

@foreach($product->images as $image) 
    {{$image->path}} 
@endforeach

或者在您的产品型号中执行此操作并更改数据库结构

public function image()
{
   return $this->hasOne(Image::class);
}

我希望它有所帮助。

答案 2 :(得分:0)

如果您的路径没有任何问题,以下是在Laravel刀片模板中显示图像的正确方法。

<img src="{{URL::asset('directory/name_of_image_file.file_format')}}">

答案 3 :(得分:0)

您在数据库path中没有字段images 您的代码必须是:

<img src="{{$product->images->[you field in Db images]}}" alt=" " class="img-responsive" />

答案 4 :(得分:0)

<a  href="{{ route('product.view', $product->slug)}}">
   <img src="{{$product->images->first()->path}}" alt=" " class="img-responsive" />
</a>

$product->images是一个集合,您需要从集合中获取图像。现在我已经使用了first()来获取第一个图像,你可能希望根据你的场景循环遍历这个集合。您可能希望阅读有关已撰写here

的答案

答案 5 :(得分:0)

<强> HTML

@foreach($products as $product)
<figure>
    <div class="snipcart-item block">
       <div class="snipcart-thumb">
           <a  href="{{ route('product.view', $product->slug)}}"><img src="{{$product->images->first()->path}}" alt=" " class="img-responsive" /></a>
           <p>{{$product->name}}</p>
           <h4>GH₵ {{ number_format($product->price,2) }} </h4>
       </div>
       <div class="snipcart-details top_brand_home_details">
         <form action="#" method="post">
           <fieldset>

           </fieldset>
         </form>
       </div>
    </div>
</figure>
@endforeach