web-dev-qa-db-ja.com

laravelジョブに依存性を注入する方法

私はlaravelジョブをコントローラーからキューに追加しています

$this->dispatchFromArray(
    'ExportCustomersSearchJob',
    [
        'userId' => $id,
        'clientId' => $clientId
    ]
);

userRepositoryクラスを実装するときに、依存関係としてExportCustomersSearchJobを挿入したいと思います。どうすればいいですか?

私はこれを持っていますが、それは機能しません

class ExportCustomersSearchJob extends Job implements SelfHandling, ShouldQueue
{
    use InteractsWithQueue, SerializesModels, DispatchesJobs;

    private $userId;

    private $clientId;

    private $userRepository;


    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($userId, $clientId, $userRepository)
    {
        $this->userId = $userId;
        $this->clientId = $clientId;
        $this->userRepository = $userRepository;
    }
}
17
Acho Arnold

依存関係をhandleメソッドに挿入します。

class ExportCustomersSearchJob extends Job implements SelfHandling, ShouldQueue
{
    use InteractsWithQueue, SerializesModels, DispatchesJobs;

    private $userId;

    private $clientId;

    public function __construct($userId, $clientId)
    {
        $this->userId = $userId;
        $this->clientId = $clientId;
    }

    public function handle(UserRepository $repository)
    {
        // use $repository here...
    }
}
33
Joseph Silber

誰かが依存性をhandle関数に注入する方法を疑問に思っている場合:

以下をサービスプロバイダーに入れてください

$this->app->bindMethod(ExportCustomersSearchJob::class.'@handle', function ($job, $app) {
    return $job->handle($app->make(UserRepository::class));
});

仕事のlaravelドキュメント

0
m_____ilk