laravel中模型的stdClass数组错误

Posted

技术标签:

【中文标题】laravel中模型的stdClass数组错误【英文标题】:stdClass array error with model in laravel 【发布时间】:2019-01-21 09:34:24 【问题描述】:
Part of my command in laravel is failing due to a fatal error:

cannot use object of type stdClass as array

我知道它与以下代码块有关,因为它会截断表,但在为每一行/结果插入新记录时失败。 Skus 是一个模型,所有字段都设置为可填充。

为什么会出现这个错误?

if ($results) 

        Skus::truncate();

        foreach ($results as $row) 
            $sku = new Skus;
            $sku->category = $row['category'];
            $sku->build = $row['build'];
            $sku->fabric = $row['fabric'];
            $sku->color = $row['color'];
            $sku->location = $row['location'];
            $sku->type = $row['type'];
            $sku->price = $row['price'];
            $sku->save();
        

    

【问题讨论】:

var_dump $row 在 $row['category'] 之前,您可能会对正在发生的事情有更好的了解。 :) 【参考方案1】:

我想您的 $results 变量是 json 响应或类似内容的一部分。 尝试将第二个参数解码为true,以获取数组而不是对象。

$results = json_decode($results, true);

如果不是这样,请提供有关这些结果来自何处的更多信息。

但如果您的错误表明您的数组是一个对象,那么您可以使用 -> 运算符访问该属性:

$sku->category = $row->category;

【讨论】:

【参考方案2】:

每次更换

$something->property = $row['somevalue']

$something->property = $row->somevalue

原因是 $row 是一个“类”,它有一些属性(变量),当你想访问一个类属性时,你必须使用“->”。

【讨论】:

以上是关于laravel中模型的stdClass数组错误的主要内容,如果未能解决你的问题,请参考以下文章

laravel 返回值

使用Twitter API搜索推文时,“无法使用stdClass类型的对象作为数组”错误

迭代数据时,Laravel 无法将 stdClass 类型的对象用作 Job 的数组 [重复]

Laravel 分页错误——调用未定义的方法 stdClass::links()

Laravel:从数据库中检索模型

laravel 数据操作