我使用Maatwebsite/Laravel-Excel将一些数据导入我的laravel应用程序。
我循环使用excel的行,验证数据然后保存它,但如果我收到验证错误,我想从Excel :: load()函数外部返回$ error变量。有可能吗?
public function import()
{
Excel::load(Input::file('excelFile'), function ($reader) {
foreach ($reader->toArray() as $row) {
if($everythingOK){
//do stuff
} else {
$errors[] = 'error';
}
}
});
return $errors;
}
答案 0 :(得分:6)
您需要事先创建数组,然后使用&
将其传递给您的函数,以便能够在适当的位置使用它。
public function import()
{
$errors = [];
Excel::load(Input::file('excelFile'), function ($reader) use (&$errors) {
foreach ($reader->toArray() as $row) {
if($everythingOK){
//do stuff
} else {
$errors[] = 'error';
}
}
});
return $errors;
}
否则,您可以在$errors
功能中返回load()
。只要确保你在foreach之前声明它,以便在没有错误的情况下将其传回。