[英]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.