Я работаю с функцией очереди Laravel 4.2.Прямо сейчас у меня есть функция, которая будет обрабатывать данные, а затем возвращать результат в функцию.Моя проблема в том, как я могу проверить статус, который вернулся из очереди?
Код
Функция контроллера
public function destroy($id, $message = '')
{
//Calling queue
Queue::push('InvoiceQueue@delete_invoice', [
'id' => $id,
'Class' => $this->Class,
]);
//continue the function after returned from the queue
//Do validation based on queue returned status
$instance = $this->Class;
$record = $instance::findOrFail($id);
//Restore the DB if queue returned an error
if ($record->restore()) {
}
//Delete the DB if queue process working fine
else {
return parent::destroy($id, trans("$this->class.invoice"));
}
}
Функция очереди
public function delete_invoice($job, $data)
{
try {
return DB::transaction(function ()use ($job,$data) {
//Doing some process here, go to Catch if an error
});
} catch (TransactionException $e) {
return Response::json(['errors' => array_flatten($e->getErrors())], 400);
}
}
Я не уверен, как выполнить проверку в функции контроллера на основев очередь вернул результат.Приведенный выше код всегда выполняет restore()
и никогда не обращается к оператору else.