首先檢查所有模型是否可以保存。然后保存。
我試圖從查詢中保存資料。我有 3 個查詢:
$message_header->save();
$save_receive_info->save_receive_info_id = $message_header->id;
$information_receive->save();
$information_chargeline->save_receive_info_details_id = $information_receive->id;
$maklumat_chargeline->save();
所以,基于這個查詢,首先它保存$message_header,然后如果save_receive_info,但是如果receive_info在保存時出錯,我該怎么辦?
我的意思是,我想檢查所有查詢是否可執行然后保存。我對此有疑問,因為其他查詢是基于其他 id 存盤的
請幫忙。對不起我的英語不好。
uj5u.com熱心網友回復:
您可以對 DB 事務使用 try 和 catch 塊。
use Illuminate\Support\Facades\DB;
DB::beginTransaction();
try {
// your code logic before save
$message_header->save();
$save_receive_info->save_receive_info_id = $message_header->id;
$information_receive->save();
$information_chargeline->save_receive_info_details_id = $information_receive->id;
$maklumat_chargeline->save();
DB::commit();
// all good
} catch (\Exception $e) {
DB::rollback();
// something went wrong
}
uj5u.com熱心網友回復:
您無法在執行之前檢查查詢是否可執行,但您可以使用 DB Transactions 實作類似的功能。
因此,如果您可以使用 DB Transactions,它將執行所有查詢,如果出現故障,它將撤消您之前所做的所有查詢。
use Illuminate\Support\Facades\DB;
try {
DB::beginTransaction();
$message_header->save();
$save_receive_info->save_receive_info_id = $message_header->id;
$information_receive->save();
$information_chargeline->save_receive_info_details_id = $information_receive->id;
$maklumat_chargeline->save();
DB::commit();
} catch (\Throwable $th) {
DB::rollBack();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/524159.html
標籤:phpmysql拉拉维尔
上一篇:PDO結果的陣列過濾器
下一篇:提交表單資料到MySQL問題
