Laravel 8 标记
Horizon 允许您将 tags
分配给任务,包括邮件、事件广播、通知和排队的事件监听器。实际上,Horizon 会根据附加到作业上的有 Eloquent 模型,智能地、自动地标记大多数任务。例如,看看下面的任务:
<?php
namespace App\Jobs;
use App\Models\Video;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class RenderVideo implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* video 实例
*
* @var \App\Models\Video
*/
public $video;
/**
* 创建一个新的任务实例
*
* @param \App\Models\Video $video
* @return void
*/
public function __construct(Video $video)
{
$this->video = $video;
}
/**
* 执行任务
*
* @return void
*/
public function handle()
{
//
}
}
如果此任务与 App\Models\Video
实例一起排队,且该实例的 id 为 1,则该作业将自动接收 App\Models\Video:1
标记。这是因为 Horizon 将为任何有 Eloquent 的模型检查任务的属性。如果找到了有 Eloquent 的模型,Horizon 将智能地使用模型的类名和主键标记任务:
$video = App\Models\Video::find(1);
App\Jobs\RenderVideo::dispatch($video);