Laravel Livewire 队列不允许序列化

Laravel Livewire queues Serialization is not allowed

我尝试通过 laravel 队列加载多个图像,如下所示:

控制器:

foreach ($this->imagenes as $pathGaleria) {

        $imagenes = $pathGaleria;
        $nombre = Str::random(10) . $imagenes->getClientOriginalName();

        $ruta = public_path() . '\imagenesPropiedades/' . $nombre;

        dispatch(new ProcesarImagenes($pathGaleria, $ruta));

        $img = imgPropiedades::create([
            'url' => '/imagenesPropiedades/' . $nombre,
            'property_id' => $this->propiedadId
        ]);
    }

工作:

public $pathGaleria;
public $ruta;

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

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    $img = $this->pathGaleria;
    $rut = $this->ruta;
    //make recibe la imagen
    Image::make($img)
    ->resize(800, null, function ($constraint) {
        $constraint->aspectRatio();
    })
    ->save($rut);
}

我收到以下错误:不允许序列化 'Livewire\TemporaryUploadedFile'。

任何建议对我来说都很有价值。

我建议传递临时文件的 getRealPath(),稍后使用 file_get_contents() 并从那里继续。

例如

dispatch(new ProcesarImagenes($pathGaleria->getRealPath(), $ruta));

在你的工作下 handle()

$img = file_get_contents($this->pathGaleria);

此外,请确保在您的本地环境中使用 queue:listen,这样您就不必在更改作业文件后重新启动队列。