簡體   English   中英

Laravel恢復已刪除的記錄

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM