范围 - 如何从laravel excel导入返回错误?

Agu*_*u V 3 php excel scope laravel laravel-excel

我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)

ayn*_*ber 7

您需要事先创建数组,然后将其传递给您的函数,&以便能够在适当的位置使用它.

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;
}
Run Code Online (Sandbox Code Playgroud)

否则,您可以$errorsload()功能范围内返回.只需确保在foreach之前声明它,以便在没有错误的情况下将其传回.

  • 我明白,没关系.你需要将`&`添加到`$ errors`,以便它将它传回.我已经更新了我的答案. (3认同)