laravel中的模型,stdClass数组错误

时间:2018-08-14 13:41:26

标签: php sql laravel model

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();
        }

    }

2 个答案:

答案 0 :(得分:2)

每更改一次

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

$something->property = $row->somevalue

原因是$ row是具有某些属性(变量)的“类”,并且当您要访问类属性时,必须使用“->”。

答案 1 :(得分:2)

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

$results = json_decode($results, true);

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

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

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