Я занимаюсь разработкой приложения для нескольких арендаторов с laravel 5.8 и использую this для установки соответствующего идентификатора арендатора для задания, но когда я отправляю задания с консоли, как это
$websites = \Hyn\Tenancy\Models\Website::all();
foreach ($websites as $website) {
$environment = $this->app->make(\Hyn\Tenancy\Environment::class);
$environment->tenant($website);
$schedule->call(function() use ($website){Bus::dispatch((new FetchCallsData()));})->hourly();
}
и в buildDatabaseRecord
, когда я попытался получить текущий веб-сайт, у меня будет последний, который был в foreach
. Я обнаружил, что buildDatabaseRecord
будет работать асинхронно по событиям, поэтому текущий веб-сайт будет неправильным в buildDatabaseRecord
protected function buildDatabaseRecord($queue, $payload, $availableAt, $attempts = 0)
{
$queueRecord = [
'queue' => $queue,
'attempts' => $attempts,
'reserved_at' => null,
'available_at' => $availableAt,
'created_at' => $this->currentTime(),
'payload' => $payload,
];
$website = app(\Hyn\Tenancy\Environment::class)->tenant();
//here is the issue and I get last website in foreach loop for all jobs
$queueRecord['tenant_id']=$website->id
//also I tried using global variables but same result
/*if(isset( $_SERVER['tenant_id']))
$queueRecord['tenant_id'] = $_SERVER['tenant_id'];*/
return $queueRecord;
}
Я думаю, мне нужно добавить onTenant($website)
или что-то подобное к работе?