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