最近在使用laravel的过程中
出现以下错误
Whoops, looks like something went wrong. Property [id] does not exist on this collection instance.
经过认真调试发现是关联关系的问题
简单说来取的是二维集合的属性,于是报错
解决办法取二维集合的第一个元素,然后再取属性值
我的原因是因为我用的是 ->get() 查询,但是我只有一条数据,get查询返回的是一个二维数组,需要使用$arr[0]->id,这样是方式,或者一条数据时直接使用->first(),的方式就可以解决了
我在使用 eloquent 关系时也遇到了类似的错误,问题是我使用的是 return $this->hasMany(ClassName::class); 但关系是一对一的,所以问题的解决方案是 return $this->hasOne(ClassName::class); 。
在上面的示例中,第一个代码段将返回对象数组,这些对象将分解链式 eloquent 代码中的 eloquent 关系流,例如 $firstChain->middleChain->requiredData
在这里,如果 middleChain 有 arrayOfObjects 它会导致上述错误说 property doesn't exist 。
使用 eloquent 关系时要小心正确提及它所具有的关系类型