【问题标题】:Laravel belongsTo & hasMany relationship not workingLaravel belongsTo 和 hasMany 关系不起作用
【发布时间】:2019-01-29 06:45:12
【问题描述】:

从今天开始我就遇到了这个问题(之前给定的代码工作得很好),我无法在刀片中获得 Category 模型的 title

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"} 

清除关注;

缓存:清除

配置:清除

路线:清除

作曲家更新

作曲家转储自动加载

浏览器缓存已清除

还是不行

帮助表示感谢

【问题讨论】:

  • 你试过使用$subcategory->category['title']吗?
  • 成功了。为什么?能否详细说明。其余的关系运作良好,但为什么这不是?
  • 现在,它没有显示标题,因为它在 json 中出现

标签: laravel eloquent laravel-blade


【解决方案1】:

你能试试这个吗?

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

【讨论】:

  • 更新代码,如果是json响应"{{ $subcategory->category }}",请使用json_decode($subcategory->category)转成数组
【解决方案2】:

既然category有subcategory,subcategory是child,那就这样试试吧

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

或者如果这不起作用

$title = $cat->category->title;
}

【讨论】:

  • 你放在foreach语句下面了吗?
  • 是的,它在foreach循环下
  • 类别有很多对吗?然后像这样调整你的代码,$category=category::with('subcategory'),然后循环并获取像 $category->subcategory[0]->title 这样的值
猜你喜欢
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 2015-12-22
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
相关资源
最近更新 更多