此集合实例上不存在属性[规范]

时间:2017-11-06 14:21:18

标签: laravel laravel-blade

已解决:以下答案。

我将Laravel项目从5.3升级到5.4然后升级到5.5。

目前唯一被打破的是,当我进入产品编辑页面时,我收到错误:

Property [specifications] does not exist on this collection instance. 

例外:

public function __get($key)
    {
        if (! in_array($key, static::$proxies)) {
            throw new Exception("Property [{$key}] does not exist on this collection instance.");
        }

        return new HigherOrderCollectionProxy($this, $key);
    }

这是由刀片模板中的这一行引起的:

@if($categories->specifications->first())

$categories变量从ProductController传递给视图,如下所示:

$categories = Category::with('specifications.attributes')->find($product->getCategoryId());

enter image description here

5.4 / 5.5中哪些内容可能会破坏这行代码?

1 个答案:

答案 0 :(得分:2)

由于某些原因,我必须在访问规范之前将->first()添加到$categories

$categories->first()->specifications->first()

在同一视图中,此$product->categories->first()工作正常,返回方式与控制器中的类别相同,但不需要另一个->first()。不知道为什么。