使用 Laravel MySQL 更新兩行中的數位數據
P粉161939752
P粉161939752 2024-02-17 18:43:50
0
1
330

我的資料庫中有一個包含行數的詳細資料表。

見下圖。分為兩行,一列有 1250、1250 盧比。 我總共顯示了2500。但是當使用者想要使用全部總量時我想更新兩列中的數據,如何在 laravel 中更新這兩行?

$wallet_details = tbl_wallet_detail::where('wd_parent_id', $usewallet->wm_id)
    ->whereMonth('tbl_wallet_details.wd_start_date', date('m'))
    ->whereYear('tbl_wallet_details.wd_start_date', date('Y'))->first();

$wallet_details->wd_used_amount = $wallet_details->wd_used_amount + $request->usewallet;
$wallet_details->wd_remaining_amount = $wallet_details->wd_remaining_amount - $request->usewallet;
$wallet_details->save();

P粉161939752
P粉161939752

全部回覆(1)
P粉642436282

我不知道您的用例的所有細節(例如您如何獲取用戶已使用的量),但是,以下概述了解決您的問題的一種方法。

我為此範例建立了一個Wallet 模型和關聯表,並在其上定義了一個used 列來表示已使用的金額,以及類似的 remaining 列。顯然,您可以用您的具體資訊替換這些內容。

$wallet = \App\Models\Wallet::where('user_id', 1)
    ->selectRaw('sum(used) as total')
    ->groupBy('used')
    ->first();

$remaining = $wallet->total - 1500;

\App\Models\Wallet::where('user_id', 1)
    ->update([
        'remaining' => $remaining / $wallet->count()
    ]);
  1. 首先,我們執行查詢來對給定使用者used欄位值進行求和(總計)
  2. 接下來,我們透過從步驟 1 中獲得的總額中扣除已使用的金額(在您的範例中為 1500)來計算 $remaining 金額
  3. 最後,我們更新表中給定用戶每一行的剩餘

#如上所述,如何從表中獲取相關行取決於您,使用user_id 只是一個範例,但您可以使用transaction id 或其他對您的用例有意義。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板