我需要从Excel工作表导入用户。一切都很好,但是在导入之后,我必须与那些导入的用户做更多的事情。导入后如何在控制器中获取它们?
我尝试遵循Laravel Excel文档,但它非常隐秘:(
无论如何,我在他们的示例中都有一个UserImport类:
<?php
namespace App\Imports;
use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
class UsersImport implements ToModel
{
/**
* @param array $row
*
* @return User|null
*/
public function model(array $row)
{
return new User([
'name' => $row[0],
'email' => $row[1],
'password' => Hash::make($row[2]),
]);
}
}
并且在我的控制器中,我有:
$import = new UsersImport();
$import->import(request()->file('xlsfile'));
if($import->errors()->count())
{
dump($import->errors());
}
else
{
echo 'Success<br>';
dd($import);
}
不幸的是,$ import包含而不是我的记录:
App\Imports\UsersImport {#372 ▼
#output: null
#errors: []
}
摘自“导入基础知识”下的文档
导入数组或集合
如果您要绕过ToArray或ToCollection问题,并希望在您的控制器中有一系列导入的数据(请注意性能!),则可以使用:: toArray()或:: toCollection()方法。
$array = Excel::toArray(new UsersImport, 'users.xlsx');
$collection = Excel::toCollection(new UsersImport, 'users.xlsx');
根据您的情况,您可能可以直接访问$import->toArray()
。但是我不确定。快去吧。