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

发布于 2022-09-06 04:04:51 字数 593 浏览 14 评论 0

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来解决此问题,但如果不能使用转换器的情况下在控制器里面即使这样处理也会报错,哪位大神知道该怎么解决此问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

背叛残局 2022-09-13 04:04:51
用toArray()就可以了

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

不知道是不是你想要的效果
乙白 2022-09-13 04:04:51

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

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

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

$all = Model::all()->toArray();
foreach ($all as $item) {
  // ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文