Laravel Relationship работает, но показывает это -> Попытка получить свойство не объекта

В моем контроллере у меня есть:

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

Что там не так?

1 ответ

По вашему вопросу, вы присоединились к двум таблицам с отношениями. Когда вы выбираете данные из categories стол вернется categories а также product данные.

По данной ссылке вы: http://pastebin.com/U3FAtcsK, ваш $data переменная содержит этот тип иерархии.

category 
  subcategories
    products
      prices
      image

вы пытаетесь отобразить данные image массив.

ты должен принести image данные как это.

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

Поймите свою иерархию массивов. Вы не сделали ничего плохого.:)

Другие вопросы по тегам