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

无法将Excel导入数据库:插入数组$inserts为空的问题求助

嘿,我一眼就看到问题出在哪了!你在闭包里使用use ($inserts)的时候,是按值传递的,这意味着闭包里的$inserts只是外部变量的一个副本——你在闭包里往这个副本里加数据,根本不会影响到外面的那个空数组,所以最后dd($inserts)才会显示空的[]。

解决办法很简单,把传递方式改成引用传递,在变量前面加个&符号就行。修改后的代码如下:

public function importExcel() { 
    $path = Input::file('import_file')->getRealPath(); 
    $inserts = []; 
    // 这里给$inserts加上&,改成引用传递
    Excel::load($path, function($reader) use (&$inserts) { 
        foreach ($reader->toArray() as $rows) { 
            foreach($rows as $row) { 
                // 记得补全你要取的字段,比如这里假设是title
                $inserts[] = ['title' => $row['title']]; 
            }
        }
    });
    dd($inserts); // 现在应该能看到导入的数据了
}

另外提个小细节:你原来代码里的$row['t...应该是没写完,要确保这里的键名和Excel里的列名(或者你解析后对应的字段名)完全匹配,不然也可能出现数据无法正确存入的情况哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:26:25