如何解决 laravel 中失败的作业批处理

How to solve failed job batching in laravel

我做了一个作业批处理以将 csv 插入数据库。

方法如下:

public function upload()
{
    if(request()->has('file')){
        $data = file(request()->file);
        
        // Chunking file
        $chunks = array_chunk($data,5);
       
        $batch = Bus::batch([])->dispatch();

        foreach($chunks as $chunk){
            
            $data = array_map('str_getcsv',$chunk);

            $batch->add(new BinlocCsvProcess($data));
        } 

        return $batch;
    }
    return 'please upload file';
}

这是我的工作class:

class BinlocCsvProcess implements ShouldQueue {

public $data;
/**
 * Create a new job instance.
 *
 * @return void
 */
public function __construct($data)
{
    $this->data = $data;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    foreach($this->$data as $item){
        Binloc::create($item);
    } 
}
}

我不知道如何得到错误,为什么它不起作用,我不知道如何解决它。

请帮助我。

错误出现是因为行foreach($this->$data as $item)。你应该删除 $,所以你的代码应该像这样 foreach($this->data as $item).