使用 Laravel MySQL 更新两行中的数字数据
P粉161939752
P粉161939752 2024-02-17 18:43:50
0
1
282

我的数据库中有一个包含行数的详细信息表。

见下图。分为两行,一列中有 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 或其他对您的用例有意义。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!