【发布时间】:2017-01-21 02:01:36
【问题描述】:
在我的控制器中,我有:
public function showMainPage()
{
$categories = Category::with('subcategories.products.prices', 'subcategories.products.image')->get();
$data = array(
"categories" => $categories,
);
return view('index')->with($data);
}
当我在我的视图中这样引用它时:
@foreach($subcategory->products as $product)
<img src="{{ $product->image->thumbnail }}" alt="">
我收到 Trying to get property of non-object 错误。
这是我的关系:
Product.php
public function image()
{
return $this->belongsTo('App\ProductImage');
}
这是我的 ProductImage 关系:
public function product()
{
return $this->belongsTo('App\Product');
}
那里有什么问题?
【问题讨论】:
-
两个关系都有一个
belongTo,这是不对的。产品应该是hasMany。 -
@Scarwolf 在您看来,您似乎得到的是一个数组而不是一个集合。请您使用
$product['image']['thumbnail']进行检查 -
安德鲁:哦,你说得对。将其更改为 hasOne,但仍然相同。 (每个产品 1 个图像行)。 @jaysingkar 那行得通。为什么 laravel 会返回一个数组呢?我怎样才能把它改回一个集合......?
-
对不起@Scarwolf 我不确定。但是,您可以尝试直接传递
$categories,而不将其添加到$data数组中。 -
使用
with可能会覆盖您的人际关系。如果您一直有关系,请尝试仅使用Categories::all(),然后通过关系访问所有内容。
标签: php laravel relationship object-property