我正在尝试使用Laravel Excel存储库使用 Laravel 中的 excel 文件(.csv)的数据更新 sql 数据库表。
我的控制器函数返回 excel 文件的内容,但只是在一个 2 的数组中(应该是 604)。
因此,我认为我必须在我的函数中添加“行尾 \t”。
但是我不知道怎么做。
到目前为止,这是我所知道
的:控制器
public function uploadExcel()
{
Excel::load(Input::file('import_file'), function ($reader) {
foreach ($reader->toArray() as $value) {
$insert[] = [
'member_title' => $value->member_title,
'member_first_name' => $value->member_first_name,
'member_name_affix' => $value->member_name_affix,
'member_last_name' => $value->member_last_name,
'member_private_address' => $value->member_private_address,
'member_private_zip_code' => $value->member_private_zip_code,
'member_private_location' => $value->member_private_location,
'member_private_phone' => $value->member_private_phone,
'member_private_mobile' => $value->member_private_mobile,
'member_private_fax' => $value->member_private_fax,
'member_private_mail' => $value->member_private_mail,
'member_business_position' => $value->member_business_position,
'member_business_name' => $value->member_business_name,
'member_business_address' => $value->member_business_address,
'member_business_zip_code' => $value->member_business_zip_code,
'member_business_location' => $value->member_business_location,
'member_business_area_code' => $value->member_business_area_code,
'member_business_phone' => $value->member_business_phone,
'member_business_fax' => $value->member_business_fax,
'member_business_mobile' => $value->member_business_mobile,
'member_business_mail' => $value->member_business_mail,
'member_join_date' => $value->member_join_date,
'extra' => $value->extra
];
}
});
if(!empty($insert)) {
die(var_dump($insert)); <-- puts out the array for testing
DB::table('members')->insert($insert);
}
return redirect('index.index');
}
根据官方文档,我必须将其添加到我的项目中以识别正确的行尾:
class UserListImport extends \Maatwebsite\Excel\Files\ExcelFile {
protected $lineEnding = '\t';
}
如果我的预感是正确的并且文档中的这个片段可以解决我的问题:
我必须在哪里创建这个文件,其中包含文档中的代码?
我是否必须更改其他任何内容才能使该文件生效?
我对 Laravel 真的很陌生,我会非常感谢任何形式的帮助!
更新
错误信息
App\UserListImport 类包含 1 个抽象方法,因此必须声明为抽象方法或实现其余方法 (Maatwebsite\Excel\Files\ExcelFile::getFile)
应用程序/UserListImport.php
namespace App;
class UserListImport extends \Maatwebsite\Excel\Files\ExcelFile {
protected $lineEnding = '\t';
public function loadExcel() {
Excel::load(Input::file('import_file'), function ($reader) {
foreach ($reader->toArray() as $value) {
$insert[] = [
'member_title' => $value->member_title,
'member_first_name' => $value->member_first_name,
'member_name_affix' => $value->member_name_affix,
'member_last_name' => $value->member_last_name,
'member_private_address' => $value->member_private_address,
'member_private_zip_code' => $value->member_private_zip_code,
'member_private_location' => $value->member_private_location,
'member_private_phone' => $value->member_private_phone,
'member_private_mobile' => $value->member_private_mobile,
'member_private_fax' => $value->member_private_fax,
'member_private_mail' => $value->member_private_mail,
'member_business_position' => $value->member_business_position,
'member_business_name' => $value->member_business_name,
'member_business_address' => $value->member_business_address,
'member_business_zip_code' => $value->member_business_zip_code,
'member_business_location' => $value->member_business_location,
'member_business_area_code' => $value->member_business_area_code,
'member_business_phone' => $value->member_business_phone,
'member_business_fax' => $value->member_business_fax,
'member_business_mobile' => $value->member_business_mobile,
'member_business_mail' => $value->member_business_mail,
'member_join_date' => $value->member_join_date,
'extra' => $value->extra
];
}
});
if(!empty($insert)) {
die(var_dump($insert));
DB::table('members')->insert($insert);
}
return redirect('index.index');
}
}
控制器
use Maatwebsite\Excel\Facades\Excel;
use App\UserListImport;
public function uploadExcel()
{
UserListImport::loadExcel();
}