首页 > 解决方案 > 使用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 中存储数据。

标签: phplaravelqueuemaatwebsite-excel

解决方案


如果在您使用同步驱动器时导入工作正常,则意味着您需要运行队列工作者

php artisan queue:work


推荐阅读