Что произойдет, если задание в очереди Laravel передается в качестве входной модели Eloquent, но модель удаляется до того, как задание будет запущено в очереди?Как задание в очереди Laravel обрабатывает удаленную модель в качестве входных данных?
Например, я создаю сайт электронной коммерции с Laravel 5.2, где клиент может вводить адреса и способы оплаты. Способ оплаты относится к адресу. Но если клиент пытается удалить адрес, а не каскадировать и удалить какие-либо связанные с ним способы оплаты, я удаляю адрес, пометив его как отключенный. Таким образом, способ оплаты все равно может использоваться до тех пор, пока клиент не обновит связанный с ним платежный адрес.
Однако, если метод оплаты удален и он ссылается на адрес, который был удален софт, я хочу сделать некоторую сборку мусора и удалить адрес из базы данных. Это не должно происходить синхронно, поэтому я написал простую задачу для выполнения этой задачи. Метод ручки выглядит следующим образом:
public function handle(PaymentMethodRepository $paymentMethodRepository, AddressRepository $addressRepository)
{
$billingAddress = $paymentMethodRepository->address($this->paymentMethod);
if (! $billingAddress->enabled) {
$addressRepository->delete($billingAddress);
}
}
рассылает эту работу в destroy
способе PaymentMethodsController. Однако, если метод оплаты, переданный заданию, удаляется из базы данных до того, как задание будет запущено в очереди, будет ли работать ошибка?
Я все еще разрабатываю сайт, поэтому у меня нет сервера для развертывания и проверки того, что происходит. Я знаю, что модель сериализуется, чтобы помещаться в очередь, но мне интересно, возникнет ли проблема, когда модель будет восстановлена для выполнения задания.