php - Laravel 关系工作,但显示它 -> 试图获取非对象的属性

标签 php laravel relationship object-property

在我的 Controller 中我有:

public function showMainPage()
{
        $categories = Category::with('subcategories.products.prices', 'subcategories.products.image')->get();

        $data = array(
          "categories" => $categories,
        );

        return view('index')->with($data);
}

当我在我的 View 中这样引用它时:

@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');
    }

哪里出了问题?

最佳答案

根据您的问题,您加入了两个具有关系的表。当您从 categories 表中获取数据时,它将返回 categoriesproduct 数据。

根据您给定的链接:http://pastebin.com/U3FAtcsK ,您的 $data 变量包含这种类型的层次结构。

category 
  subcategories
    products
      prices
      image

您正在尝试显示 image 数组的数据。

你必须像这样获取image数据。

$categories->subcategories->product->image->thumbnail

了解您的数组层次结构。你没有做错任何事。 :)

关于php - Laravel 关系工作,但显示它 -> 试图获取非对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39470527/

相关文章:

javascript - 如何使用php读取html中标签的id?

php - 将分数从 AS3 提交到 PHP/SQL - #Error 2101

php - Laravel 迁移似乎无法在某些计算机上运行

Neo4j 节点或关系支持 ttl 吗?

Laravel Eloquent 嵌套查询

php - 在PHP中过滤MySQL数据以仅显示当前 session 用户的数据?

php - MySqli 无法连接到本地主机

php - SQLSTATE[HY000] [2002] 连接尝试失败.. - 尝试从本地连接到远程服务器时

php - Laravel 在 foreach 中将数据从一个模型发送到另一个模型

mysql - 为什么在MySQL中添加外键而不绘制关系