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数组错误的主要内容,如果未能解决你的问题,请参考以下文章
使用Twitter API搜索推文时,“无法使用stdClass类型的对象作为数组”错误
迭代数据时,Laravel 无法将 stdClass 类型的对象用作 Job 的数组 [重复]