我有两个网上商店的 mySQL 表:产品(列:id 等)图片(列:id、product_id、文件路径等...)产品表中的任何产品都可能有无限数量的图片!因此,我的产品模型如下所示:class Product extends Model{ public function pictures() { return $this->hasMany('App\Picture'); }}我的图片模型如下所示:class Picture extends Model{ //}现在,我尝试列出所有产品及其相应的图片数据集。我尝试运行多个代码。但是,以下代码都不起作用:\App\Product::pictures()->get()不起作用!显示此错误:Non-static method App\Product::pictures() should not be called statically我还尝试了一些其他方法,例如\App\Product::with('pictures')->get());错误:Trying to get property 'filepath' of non-object (View: /home/vagrant/testproject/resources/views/products.blade.php)备注:Filepath是一列图片。我试图在刀片中访问它,如下所示:{{$products->picture->filepath}}我现在在这个小事情上工作了几个小时 - 但我只是不明白我做错了什么?非常感谢任何帮助!感谢你们!
1 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
您正在做的事情有两个潜在的问题。
你正在使用
{{$products->picture->filepath}}
,所以我假设你正在做类似的事情:
$products = \App\Product::with('pictures')->get());
这$products
是模型的集合Product
。该集合没有属性picture
。
您正在循环浏览类似的产品
@foreach($products as $product)
{{$product->picture->filepath}}
@endforeach
除非每个产品都有图片,否则可能会导致您所说的错误。如果产品没有图片,那么您将在 null 上调用 filepath。您可以通过多种方式解决这个问题,我将在下面列出一种:
@foreach($products as $product)
@if(!empty($product->picture))
{{$product->picture->filepath}}
@endif
@endforeach
正如OP在下面的评论中指出的那样,根本问题是这种关系有很多。所以要使用图片你应该这样做:
@foreach($products as $product)
@foreach($product->pictures as $picture)
{{$picture->filepath}}
@endforeach
@endforeach
- 1 回答
- 0 关注
- 56 浏览
添加回答
举报
0/150
提交
取消