【发布时间】:2018-10-11 05:08:16
【问题描述】:
我正在尝试使用 laravel 队列将数据存储在数据库中。我想向用户显示“正在导入您的文件”并希望使用队列存储数据的快速消息。我在 env 文件中使用数据库作为 QUEUE_DRIVER。当我尝试存储数据时,它会在作业表中创建条目,但不会在 demo_tbl 中存储任何内容。
这是我到目前为止所做的 -
控制器
public function import(Request $request)
{
Excel::filter('chunk')->load($request->file('import_file')->getRealPath())->chunk(250, function($reader)
{
$this->dispatch(new ImportDistributor($reader->toArray()));
});
dd('your file is being imported. we will inform you once it is done.');
}
工作 -
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Model\DemoTableModel;
use DB;
class ImportDistributor implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
protected $data;
public function __construct(array $request)
{
$this->data = $request;
}
public function handle()
{
if(isset($this->data) && !empty($this->data))
{
foreach($this->data as $val)
{
DemoTableModel::insert($val);
}
}
}
}
型号
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class DemoTableModel extends Model
{
protected $table = 'demo_tbl';
protected $fillable = [
'name',
'city'
];
}
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
你在本地机器上测试吗?
-
@MayuriPansuriya 是的,我正在本地机器上测试它
-
你启动了队列工作者吗?
-
是的,我开始了它,但仍然是同样的问题。