laravel queue job , Dispatch 两个参数

laravel queue job , Dispatch two argument

这是我的控制器

SmsAdsJob::dispatch('aaa','bbb');

这是我的工作

    protected $request;

    public function __construct($request)
    {
        $this->request = $request;
    }

    public function handle()
    {
        $clients=$this->request;

        logger($clients);
    }

这是记录器

local.DEBUG: aaa  

问题出在控制器中,我发送了两个值,但在工作中我得到了一个值,但我应该在工作中得到两个值,你能给点建议吗?

您可以在数组或对象数据类型中传递参数。例如:

$params = ['aaa', 'bbb']
SmsAdsJob::dispatch( $params );

或者:

public function __construct($param1, $param2)
{
    $this->param1 = $param1;
    $this->param2 = $param2;
}

当你传递给变量时你应该考虑你的工作class必须知道你想要多少参数 收到.

SmsAdsJob 的构造函数中应该有两个属性。然后你就可以访问它们了。我不明白你为什么在作业中使用“请求”

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class SmsAdsJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    private $a;
    private $b;

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        echo $this->a,PHP_EOL;
        echo $this->b,PHP_EOL;
    }
}

请检查https://laravel.com/docs/8.x/queues