簡體   English   中英

Laravel - 歸檔數據、刪除並插入到另一個表

[英]Laravel - Archiving Data, Delete and Insert to another Table

當我單擊按鈕刪除時,我想刪除數據並將其插入到另一個作為存檔的表中,我該怎么做?

例如,我的另一個名為Archive的新表 model 和名為archive的新表

這是我的 Destroy Public Function:

public function destroy($id)
{
    $client = Client::find($id);
    $client->delete();

}

我的商店公開 Function:

$client = new Client;
$client->client_code = $request->input('client_code');
$client->client_name = $request->input('client_name');

那么,為什么不對它們進行軟刪除並將其用作存檔。 進行還原,獲取等操作將更加容易。

軟刪除模型需求

use SoftDeletes;

在您的遷移表中

$table->softDeletes();

然后,當您運行$client->delete(); 除非您在查詢中使用withTrashed() ,否則模型只會標記為已刪除,並且不會顯示在查詢中。 如果需要,可以運行$client->restore()

https://laravel.com/docs/5.7/eloquent#soft-deleting


或您要求的解決方案

public function destroy($id)
{
    $client = Client::find($id);

    Archive::create([
      'client_code' => $client->client_code,
      'client_name' => $client->client_name
    ])

    $client->delete();

}

如果歸檔數據已被刪除,則不確定如何將歸檔數據連接到客戶端,也許有一個user_id,以便您知道誰擁有什么。 盡管如此,仍然建議為此使用softdeletes。

我是這樣做的

public function archive()
{
    DeviceRawDataArchive::create($this->toArray());
    $this->delete();
}

並像這樣打電話給我的 controller

$rawData->archive();

希望這可以幫助某人。 軟刪除很好,但我正在處理數百萬行,所以最好將它們存檔,這樣我的 Cron 作業運行得更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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