【发布时间】:2019-09-05 17:21:37
【问题描述】:
我不想得到sub-category 下的id category。我尝试使用
id 的值
$categories->子类别->id
但是它给了我一个错误:
此集合实例上不存在属性 [子类别]。
这是我的关系:
类别
class Category extends Model
{
protected $fillable = ([
'name'
]);
public function subcategory(Type $var = null)
{
# code...
return $this->hasMany(Subcategory::class,'category_id','id');
}
}
这是我的刀片
<form action="{{route('subcategory.update', $categories->subcategory->id)}}">
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</form>
控制器
public function create()
{
$categories = Category::all();
// dd($categories);
return view('settings.create', compact('categories'));
}
【问题讨论】:
-
正如@dparoli 所说,
subcategory是hasMany关系,因此在$category->subcategory中,您在一个集合中有多个,而不是一个subcategory。如果至少有一个结果,您需要访问其中一个以获取 ID$category->subcategory[0]->id。 -
$categories已经是一个集合,subcategory()关系也是一个集合,因为它是一个hasMany并且应该命名为subcategories(),所以现在你在@987654338 上遇到了这个错误@ 但如果您执行$categories[0]->subcategory->id,您将在属性id上遇到相同的错误。因此,您必须决定是要检索多条记录还是只检索一条,但您没有发布控制器代码。 -
我将编辑帖子以显示控制器代码@dparoli
-
发布的函数是
create(),所以您可能试图显示某个模型的创建表单,不清楚是Category还是Subcategory。但是发布的表单有一个指向更新路线的动作。我无法理解您要做什么,但我不想调试您的所有代码,这不是 SO 的工作方式。发布的错误在提供的链接中已经有了很好的答案,在您解决了该错误后,您可以打开一个新问题,其中包含您可能遇到的其他错误以及所需的最少示例代码。