[英]Laravel restore back deleted record
我正在尝试实现将系统还原回已删除记录的队列。 现在,我的代码可以正常运行,但是删除后记录将无法恢复。
public function delete_invoice($job, $data)
{
Debugbar::info("invoiceSale");
try {
return DB::transaction(function ()use ($job,$data) {
});
} catch (TransactionException $e) {
# reestore function
extract($data);
$data = $Class::withTrashed()->find($id);
$data->restore();
Debugbar::info($data->toArray());
return Response::json(['errors' => array_flatten($e->getErrors())], 400);
}
}
这是控制器的功能
public function destroy($id, $message = '')
{
Debugbar::info("ok");
Queue::push('IQueue@delete_invoice', [
'id' => $id,
'Class' => $this->Class,
]);
return parent::destroy($id, trans("$this->class.invoice")); <--delete invoice
}
您可以使用以下代码,希望对您有所帮助。
public function destroy(Trip $trip)
{
$trip->delete();
flash()->warning('Trip '.$trip->id.' successfully deleted! <a href=trips/'.$trip->id.'/restore>UNDO</a>');
return redirect('trips');
}
public function restore(Request $request)
{
$trip = Trip::withTrashed()->where('id', $request['id'])->restore();
return redirect ('trips');
}
我假设您的代码删除了其他地方的记录,并且您在此处提供的代码应该根据通过$data
数组传递的模型类和记录ID ['Class' => ..., 'id' => ...]
。
那您的交易打算做什么? 您没有粘贴任何代码吗? 否则,永远不会调用catch,因为不会抛出异常,因此不会执行您的代码。
因此,只需删除try and catch。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.