私は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;
}
}
依存関係を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...
}
}
誰かが依存性をhandle
関数に注入する方法を疑問に思っている場合:
以下をサービスプロバイダーに入れてください
$this->app->bindMethod(ExportCustomersSearchJob::class.'@handle', function ($job, $app) {
return $job->handle($app->make(UserRepository::class));
});