laravel 中的model返回的对象以及stdClass对象转成数组foreach问题

Model::all() 返回的对象格式:

 object(Illuminate\Database\Eloquent\Collection)[275]
  protected 'items' => 
    array (size=1)
      0 => 
        object(App\Models\Keywords)[276]

重组的‘对象格式:

object(Illuminate\Support\Collection)[249]
  protected 'items' => 
    array (size=1)
      0 => 
        object(stdClass)[265]          

问题当重组的对象转换成数组在foreach循环的时候会出现


    “Cannot use a scalar value as an array”

这种错误,之前用转换器collect或者json_decode来解决此问题,但如果不能使用转换器的情况下在控制器里面即使这样处理也会报错,哪位大神知道该怎么解决此问题?

阅读 8.1k
2 个回答
用toArray()就可以了

$res = DB::table('column')->get()->toArray();
foreach ($res as $columns) {
      echo $columns->title;
}

不知道是不是你想要的效果

两种方法, 一种是直接用Collectionforeach方法:

Model::all()->each(function ($item){
 // ...
})

另外一种是先从Collection里取出数组, 用toArray方法,再foreach:

$all = Model::all()->toArray();
foreach ($all as $item) {
  // ...
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题