You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中Controller通过Model查询数据push到数组格式异常如何处理

问题原因

item::where('jobtype',$item)->get() 执行后返回的是Laravel的**集合(Collection)**实例,你每次调用array_push($data, $entry)是把整个集合作为单个元素插入到$data数组中,最终就会出现多层嵌套的输出结构。

修复方案

方案1:修改现有循环逻辑

如果需要保留循环查询的写法,将每次查询的结果元素合并到目标集合/数组中即可,示例如下:

class subcontroller extends Controller
{
    public function Index(Request $req)
    {
        $arr = $req->get('myArray');
        $data = collect(); // 初始化为空集合
  
        foreach($arr as $item){
            $entry = item::where('jobtype',$item)->get();
            $data = $data->merge($entry); // 合并本次查询的所有元素
        }

        return $data;
    }
}

如果要直接操作数组,也可以用array_merge实现:

foreach($arr as $item){
    $entry = item::where('jobtype',$item)->get()->toArray();
    $data = array_merge($data, $entry);
}

方案2:优化为单次查询(更推荐)

循环多次查询数据库会产生不必要的IO开销,直接用whereIn方法一次性查询所有符合条件的记录,返回结构直接符合你的预期:

class subcontroller extends Controller
{
    public function Index(Request $req)
    {
        $arr = $req->get('myArray');
        $data = item::whereIn('jobtype', $arr)->get();
        return $data;
    }
}

内容的提问来源于stack exchange,提问作者Muteeb Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:24:04