无法将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
相关产品推荐
相关产品推荐

