环境

框架/插件 版本
laravel 6.20
encore/laravel-admin 1.8.11

框架搭建 laravel-admin文档

以下讨论均是对设备表Devices,结构为(id, name, device_sn, model_number) orm模型文件 app/Model/Device.php

步骤

一、添加导入Action
php artisan admin:action Imports\ImportDevice --name="导入数据"
  • 生成的类文件 app/Admin/Actions/Imports/ImportDevice.php:
<?phpnamespace App\Admin\Actions\Imports;use Encore\Admin\Actions\Action;
use Illuminate\Http\Request;class ImportDevice extends Action
{protected $selector = '.import-device';public function handle(Request $request){// $request ...return $this->response()->success('Success message...')->refresh();}public function html(){return <<<HTML<a class="btn btn-sm btn-default import-tenant">导入数据</a>
HTML;}
}
二、安装插件
composer require maatwebsite/excel
  • 添加导入类
php artisan make:import DeviceImport --model=Model\Device
  • 生成的类文件app/Imports/DeviceImport.php:
<?phpnamespace App\Imports;use App\Model\Device;
use Maatwebsite\Excel\Concerns\ToModel;class DeviceImport implements ToModel
{/*** @param array $row** @return \Illuminate\Database\Eloquent\Model|null*/public function model(array $row){return new Device([//]);}}
  • 修改文件
<?phpnamespace App\Imports;use App\Model\Device;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\SkipsFailures;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Maatwebsite\Excel\Concerns\WithValidation;class DeviceImport implements ToModel, WithStartRow, WithValidation
{use Importable;use SkipsFailures;/*** @param array $row*  * @return \Illuminate\Database\Eloquent\Model|null*/public function model(array $row){//按照excel单元格顺序定义需要的字段return new Device(['name' => $row[0],'device_sn' => $row[1],'model_number' => $row[2],]);}//从第几行开始,防止读取表头标题public function startRow(): int{return 2;}//添加验证规则public function rules(): array{return ['0' => 'required','1' => 'required','2' => 'required','3' => 'required',];}// 自定义验证信息public function customValidationMessages(){return ['0.required' => '设备名必填','1.required' => '设备编号必填','2.required' => '设备型号必填',];}}
三、修改导入action
<?phpnamespace App\Admin\Actions\Imports;use App\Imports\DeviceImport;
use Encore\Admin\Actions\Action;
use Illuminate\Http\Request;class ImportDevice extends Action
{protected $selector = '.import-device';public function handle(Request $request){$import = new DeviceImport();$import->import($request->file('file'));$str = "";foreach ($import->failures() as $failure) {$str .= ' 第' . $failure->row() . '行 失败原因:' . implode(' ', $failure->errors()) . '<br> 行数据:' . implode(' ', $failure->values()) . '<br>';}if ($str !== '') {return $this->response()->error($str)->topFullWidth()->timeout(7000000);}return $this->response()->success('数据导入成功')->refresh();}//文件操作public function form(){$this->file('file', '请选择文件');}public function html(){return <<<HTML<a class="btn btn-sm btn-default import-device"><i class="fa fa-upload"></i>导入数据</a>
HTML;}
}
四、添加导入按钮
<?phpnamespace App\Admin\Controllers;use App\Admin\Actions\Imports\ImportDevice;
use App\Model\Device;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;class DeviceController extends AdminController
{/*** Title for current resource.** @var string*/protected $title = '设备';/*** Make a grid builder.** @return Grid*/protected function grid(){$grid = new Grid(new Device());//...//在工具栏添加导入按钮$grid->tools(function (Grid\Tools $tools) {$tools->append(new ImportDevice());});return $grid;}
}

基于laravel-admin的数据导入相关推荐

  1. 基于delphi的excel数据导入导出

    因为淘宝客户的一个小需求,写了一个"基于delphi 7的excel数据导入导出"小工具.为了抛砖引玉,将这个小工具分享出来.希望对初学者和用得到的朋友有点点小小的帮助.oracl ...

  2. 基于NPOI的Excel数据导入

    从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

  3. php模拟关注微博,PHP基于laravel框架获取微博数据之一 模拟新浪微博登录

    参考资料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leop ...

  4. php rsa2 微博,PHP 基于laravel框架获取微博数据之一 模拟新浪微博登录

    模拟新浪微博登录是抓取新浪数据的基础,网上的参考资料大多介绍的是用Python开发,有一篇使用php模拟登录的资料还是在phpcms中实现的,也没有太深入分析. PS:网上资料来源比较乱,不知道php ...

  5. eplise怎么连接数据库_基于手机信令的大数据分析教程(一)数据导入数据库

    前言 该套教程以一个初学大数据的菜鸟视角,编写数据分析处理的整套流程.写得较为详(luo)细(suo),希望适用于任何城乡规划大数据的初学者.持续更新中,若有错误,望指正! 1.任务总纲 (1)职住数 ...

  6. 数据搬运组件:基于Sqoop管理数据导入和导出

    一.Sqoop概述 Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive.HBase等)与传统的数据库(mysql.postgresql.oracle等)间进行数据的传递. 通常数据搬运 ...

  7. 基于PhalApi的PHPExcel扩展实现数据导入导出

    前言: 最近开发一款crm,使用PhalApi框架提供数据接口,要用公共接口来实现各个模块的数据导入导出功能.如果是单独的导入导出(一个模块一个导入导出接口)推荐大家使用 phpoffice/phps ...

  8. 基于Excel2013的数据导入

    请确认安装好Excel2013,如何安装Excel2013请自行上网搜索. Excel2013下载网盘链接: https://pan.baidu.com/s/1MdF2pTxlJqZMqILcW2Pe ...

  9. 基于Laravel框架开发的旅游网站管理系统PHP源码

    源码介绍 旅游网站管理系统是一款基于Laravel框架开发的在线旅游网站系统,一个类似企业网站的张家界旅游网站,主要目标是为了实现对张家界的各个景点,文化艺术,当地生活的描述.同时实现可以登陆注册网站 ...

最新文章

  1. 空空排错日志:OCS错误日志14501等解决办法
  2. WebStack-Hugo | 一个静态响应式网址导航主题
  3. 基于Http替补新闻WebService数据交换
  4. javaweb学习总结——基于Servlet+JSP+JavaBean开发模式的用户登录注册
  5. CCF NOI1038 玩扑克
  6. Apache下的Lua的配置
  7. sim800使用方法
  8. php计算器源码,php 简单计算器
  9. 美国计算机专业工资排名,美国大学薪酬概况及毕业生薪资排名前50的学校
  10. 已知等价关系求商集_等价关系、商集和集合的划分.pdf
  11. mac safari java插件_如果提示您信任或更新 Mac 上 Safari 浏览器中的插件
  12. 查询快递单号物流,自动识别出物流是否签收
  13. linux服务器上查看显卡(nvidia)型号
  14. CBS,PCBS,ECBS,EPCBS
  15. 银河麒麟连不上网怎么办
  16. Houdini学习笔记——【案例二】消散文字制作
  17. RedHat FC5安装xmms
  18. JST-BLE-DLQ蓝牙模组在物联网通信领域的应用
  19. 即时函数(Immediate Functions)
  20. .NET/C#获取十五日天气预报

热门文章

  1. P问题、NP问题、NPC问题(NP完全问题)、NPH问题和多项式时间复杂度
  2. 【图解二叉树】如何用中序遍历一棵二叉树?(三种解法)
  3. 快速学习-Windows常见CMD快捷指令
  4. 一文解惑 | crm是什么意思啊
  5. NBIOT下行harq
  6. [oeasy]python0095_乔布斯求职_雅达利_atari_breakout_打砖块_布什内尔_游戏机_Jobs
  7. Android Studio 期末大作业
  8. 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字
  9. ChatGPT:你真的了解网络安全吗?浅谈攻击防御进行时之传统的网络安全
  10. 【新知实验室】——腾讯云音视频TRTC初体验