搜索

首页  >  问答  >  正文

使用 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粉161939752289 天前320

全部回复(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
  • 取消回复