Laravel принадлежит To & hasMany отношения не работают - PullRequest
0 голосов
/ 29 января 2019

У меня возникла проблема с сегодняшнего дня (ранее данный код работал нормально), что я не могу получить модель title из Category в blade-файле.

blade.php

@foreach($subcategories as $subcategory)
    {{ $subcategory->category->title }}
@endforeach

Category.php

public function subCategories()
    {
        return $this->hasMany(SubCategory::class);
    }

protected $table = 'sub_categories';

SubCategory.php

public function category()
    {
        return $this->belongsTo(Category::class);
    }

Ошибка, которую я получаю,

"Trying to get property 'title' of non-object

ответ я получаю как json

{
  "data": {
    "id": 3,
    "title": "Paint",
    "category_id": "1",
    "active": "1"
  }
}

ответ с нетерпеливой загрузкой

  {
    "id": 3,
    "title": "Paint",
    "category_id": "1",
    "active": "1",
    "created_at": "2019-01-24 06:48:39.697",
    "updated_at": "2019-01-24 06:48:39.697",
    "category": {
      "id": 1,
      "title": "Chemical",
      "active": "1",
      "created_at": "2019-01-24 06:48:38.533",
      "updated_at": "2019-01-29 05:41:14.597"
    }
  },

[ОБНОВЛЕНО] Я получаю категорию, когда используюТолько {{$ subcategory-> category}};

{"id":1,"title":"Chemical","active":"1","created_at":"2019-01-24 06:48:38.533","updated_at":"2019-01-29 05:41:14.597"} 

Очистить следующее;

кеш: очистить

config: очистить

route: clear

обновление композитора

сброс дампа композитора

Очистка кэша браузера

Все еще не работает

Помощь оценена

Ответы [ 2 ]

0 голосов
/ 29 января 2019

, так как категория имеет подкатегорию, а подкатегория является дочерней, позвольте попробовать это следующим образом

$category = category::with('subcategory')->get();
foreach($category as $cat){
$title = $cat->category[0]->title;

или, если это не работает

$title = $cat->category->title;
}
0 голосов
/ 29 января 2019

Можете ли вы попробовать это.

@foreach($subcategories as $subcategory)
    $subcategory = (array) $subcategory;
    ///"Trying to get property 'title' of non-object 
    ///(upper code object data convert into array data)
    {{ $subcategory->category->title }}
@endforeach

ИЛИ

, если это не работает, пожалуйста, измените ваши отношения с именем поля.

//// Категория

public function subCategories()
{
    return $this->hasMany(SubCategory::class, 'id', 'cat_id');
}

//// Подкатегория

public function category()
{
    return $this->belongsTo(Category::class, 'id', 'sub_id');
}
...