laravel 7 xlsx 数据导入至 数据库

网址:

https://learnku.com/articles/32400

1:安装插件

环境要求
PHP: ^7.0
Laravel: ^5.5

安装方式
composer require maatwebsite/excel

2:

excel 导出
新建导出文件,导入导出业务代码尽量不要和原来业务耦合。我们拿UserModel 模块举例

php artisan make:import UsersImport --model=User

erre

 

 

 

模型设置需要导入的字段,fillable为白名单,防止报错;

protected $fillable = ['username', 'phone','email','password','sex'];

 3:会在 app 目录下创建 Exports 目录,UsersImport.php 代码内容,注意对应数据库字段

<?php

namespace App\Imports;

use App\Models\UserModel;
use Maatwebsite\Excel\Concerns\ToModel;

class UsersImport implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new UserModel([
            //
            'username'     => $row[0],
            'phone'    => $row[1],
            'email'=>$row[2],
            'password' => bcrypt($row[3]),
            'sex'=>$row[4],
        ]);
    }
}

4业务控制器中调用,命名空间记得引入,并书写方法


<?php

namespace App\Http\Controllers\admin;

use App\Http\Controllers\Controller;
use App\models\Node;
use Illuminate\Http\Request;
//引入xlsx
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;

class Index extends Base
{
   
//数据导入
    public function import()
    {
        $filePath=public_path().'/static/users.xlsx';
        Excel::import(new UsersImport, $filePath);
        return ['code'=>100,'message'=>'导入成功'];
    }
}

5;书写路由:

//    Excel文件导入
    Route::get('import','index@import');

6:进入表格,填写内容,按字段顺序填写,并保存至php软件的public/static目录下

 

 

7:走路由,数据添加完成,查看数据库

 

 

 

 8:报错解决,在模型内加入fillable为白名单,表示该字段可被批量赋值;(guarded为黑名单,表示该字段不可被批量赋值)。

protected $fillable = ['username', 'phone','email','password','sex'];

清缓冲:

php artisan config:clear or php artisan config:cache

 

posted @ 2021-11-14 11:06  王越666  阅读(141)  评论(0编辑  收藏  举报