Метод name
Метод name применяется к экземпляру класса Batch
и позволяет задать или получить имя пакета задач. В качестве
единственного параметра передаётся строка с именем пакета.
Метод возвращает текущий экземпляр пакета для построения цепочки вызовов.
Имя пакета используется для идентификации в интерфейсе очередей,
системе мониторинга и при логировании.
Синтаксис
<?php
$batch = Bus::batch($jobs)->name($name)->dispatch();
?>
Пример
Давайте создадим пакет задач с именем 'email-sending' для отправки писем пользователям:
<?php
namespace App\Http\Controllers;
use App\Jobs\SendWelcomeEmail;
use Illuminate\Support\Facades\Bus;
class MailController extends Controller
{
public function sendBulkEmails()
{
$jobs = [
new SendWelcomeEmail(1),
new SendWelcomeEmail(2),
new SendWelcomeEmail(3),
];
$batch = Bus::batch($jobs)
->name('email-sending')
->dispatch();
echo $batch->name;
}
}
?>
Результат выполнения кода:
"email-sending"
Пример
Используем метод для задания имени пакета при обработке большого количества данных. Пакет будет называться 'data-processing':
<?php
namespace App\Http\Controllers;
use App\Jobs\ProcessDataJob;
use Illuminate\Support\Facades\Bus;
class DataController extends Controller
{
public function processData()
{
$jobs = [];
for ($i = 0; $i < 100; $i++) {
$jobs[] = new ProcessDataJob($i);
}
$batch = Bus::batch($jobs)
->name('data-processing')
->dispatch();
$res = [
'batch_name' => $batch->name,
'total_jobs' => $batch->totalJobs,
];
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"batch_name":"data-processing","total_jobs":100}
Пример
Получим имя уже существующего пакета задач по его ID
с помощью фасада Bus и метода findBatch:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Bus;
class BatchController extends Controller
{
public function getBatchName($batchId)
{
$batch = Bus::findBatch($batchId);
if ($batch) {
echo $batch->name;
} else {
echo 'Batch not found';
}
}
}
?>
Результат выполнения кода при существующем пакете:
"image-optimization"
Результат выполнения кода при отсутствующем пакете:
"Batch not found"