php - 使用laravel中的队列将excel文件数据导入数据库中的maatwebsite
问题描述
我正在尝试使用 maatiswebsite 将 excel 文件导入数据库。为此,我使用队列,因为导入文件需要一些时间。我想向用户显示一条快速消息“正在导入您的文件。完成后我们会通知您。” 但做不到。
QUEUE_DRIVER = 数据库
这是我到目前为止所做的 -
控制器 -
public function import(Request $request)
{
Excel::filter('chunk')->load($request->file('import_file')
->getRealPath())->chunk(250, function($reader)
{
ImportDistributor::dispatch(new ImportDistributor($reader->toArray()));
});
dd('your file is being imported. we will inform you once it is done.');
}
工作 -
public function handle()
{
if(isset($this->data) && !empty($this->data))
{
foreach($this->data as $data)
{
DB::table('user_details')->insert($data);
}
}
}
模型 -
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class UserDetailsModel extends Model
{
protected $table = 'user_details';
}
我无法在 user_details 中存储数据。
解决方案
如果在您使用同步驱动器时导入工作正常,则意味着您需要运行队列工作者:
php artisan queue:work
推荐阅读
- javascript - DrawerNavigator - 未定义是一个函数
- python-3.x - 使用 spyder IDE 在 python 3.6 中的单个 if 语句中测试多个条件的语法
- kotlin - 在 Spring Rest Docs 中添加基本 url 的路径?
- python - 当某些 Windows 有焦点时,Python 不会检测到击键
- html - 在 Electron 中单击按钮时运行脚本
- ssh - 使用 sshfs Visual Studio 代码连接到 ssh
- python - Discord.py v3(重写)尝试将用户输入与预设元组列表匹配
- python - 在python烧瓶中将结果转换为json
- parquet - 使用从 parquet 文件创建的 dask 数据帧时使用过多的内存
- react-native - 安装 React-Native-firebase 后无法运行项目