如何解决 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 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)