Laravel maatwebsite/Excel 3.1导入

3.1版本跟2.*版本差别还挺大,升级后也更符合面向对象思想,子类必须去实现父类方法,这具体可以参考以下案例

1.composer require maatwebsite/excel 

2. 添加ServiceProvider config/app.php 

'providers' => [  Maatwebsite\Excel\ExcelServiceProvider::class,]

'aliases' => ['Excel' => Maatwebsite\Excel\Facades\Excel::class, ]

 3.发布配置,生成Excel.php的配置文件 

php artisan vendor:publish

4.在控制器可写: 

 public function importQuestion(Request $request)
    {
        $excel_file_path = $request->file('question');//接受文件路径
        $datas = Excel::toArray(new Question, $excel_file_path);
       注意: 这里toArray()传第一个参数是,即将插入数据的对象,
             该对象必须对toArray()重写
       
       返回的$datas,接下来业务
    }

5.重写对象方法 

//对该对象的重写,重写还有toModel,toCellection。。具体根据你的业务实现选择
可参看官方文档:https://laravel-excel.maatwebsite.nl/3.1/getting-started/installation.html

use App\Models\BaseModel;
use Maatwebsite\Excel\Concerns\ToArray;

class Question  extends BaseModel implements ToArray
{
  
    //重新父类实现
    public function array(array $array){

        return $array;
    }


}

猜你喜欢

转载自blog.csdn.net/cfun_goodmorning/article/details/87882718