Ich weiß, dass diese Frage ein paar Monate alt ist, aber ich möchte eine Beobachtung von mir hinzufügen, während ich auf dieselbe Fehlermeldung stoße. Dies liegt daran, dass der EventListener (Schnittstelle von ShouldQueue in diesem Beispiel für asynchron) eine abhängige Variable nicht korrekt auflösen kann (außerhalb des Bereichs oder nicht im Bereich des Event-Objekts enthalten, das durch die Handle-Methode (Event $ event) von EventListener übergeben wurde) .
Für mich dieser Fehler wurde gefeuert, als ich meinen Code innerhalb des __construct Blockes innerhalb des Eventlistener setzen:
public function __construct(Event $event)
{
$localProperty = $event->property
Mail::queue(etc...);
}
public function handle()
{
// Yeah I left this blank... whoops
}
Stattdessen wird der Griff() -Methode des Eventlistener nimmt eine Event-Schnittstelle und wenn Prozesse genannt den Auftrag in der Warteschlange:
in Veranstaltung:
public function __construct(Object $ticket, AnotherObject $user)
{
$this->ticket = $ticket;
$this->user = $user;
}
Und in dem Ereignisse Listener
class SomeEventListener implements ShouldQueue
{
use InteractsWithQueue;
use SerializesModels;
public function __construct()
{
// Leave me blank!
}
public function handle(Event $event)
{
$someArray = [
'ticket' = $event->ticket,
'user' = $event->user,
];
Mail::queue('some.view', $someArray, function($email) use ($someArray) {
// Do your code here
});
}
}
Obwohl ein bisschen spät, ich hoffe, das hilft jemandem. Warteschlangen ähneln den Ereignissen (mit der Ausnahme, dass Jobs die Hauptantriebskraft für Warteschlangen ist), daher sollte das meiste relevant sein.