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