Ваша коллекция красноречивых моделей структурирована неправильно.Из-за этого Laravel не может правильно сериализовать их для отправки и десериализации при запуске задания.
Когда вы отправляете красноречивую модель (или коллекцию моделей) в задание очереди, Laravel сериализует только идентификаторы моделейкогда работа отправляется.Когда задание затем обрабатывается, оно берет идентификаторы и получает данные из базы данных.
В этом случае ваш $subscribers
является красноречивым набором ParticipantesEvento
моделей.Кроме того, по вашему запросу единственными данными, которые имеют ваши модели, являются имя и адрес электронной почты пользователя.Поэтому, когда Laravel пытается сериализовать ключи этой коллекции, он не найдет никаких.
Даже если вы обновите свой запрос, включив в модель поле participantes_eventos.id
, когда задание выполняется,Ваше свойство subscribers
будет новой коллекцией моделей ParticipantesEvento без данных пользователя, которые вы указали в исходном запросе.
Ваш код показывает, что вы действительно хотите, чтобы ваш $subscribers
был тем пользователем, который присоединен к событию.Предполагая, что у вас настроены красноречивые отношения, вы можете просто сделать это:
$subscribers = $event->users;
Если у вас нет настроек взаимоотношений, добавьте это в модель Evento
.Это устанавливает отношение «многие ко многим» от событий к пользователям через таблицу participantes_eventos
.
public function users()
{
return $this->belongsToMany(User::class, 'participantes_eventos');
}
Вы можете сделать то же самое с сертификатом, тоже,Добавьте этот метод к вашей Evento
модели, чтобы установить отношение один к одному от события к сертификату:
public function certificate()
{
return $this->hasOne(Certificado::class);
}
А затем использовать его следующим образом:
$certificate = $event->certificate;