首頁  >  問答  >  主體

使用 Laravel MySQL 更新兩行中的數位數據

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

見下圖。分為兩行,一列有 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粉161939752P粉161939752244 天前281

全部回覆(1)我來回復

  • P粉642436282

    P粉6424362822024-02-18 09:34:07

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

    我為此範例建立了一個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 或其他對您的用例有意義。

    回覆
    0
  • 取消回覆