You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel多字段用户银行信息存储问题及代码修改请求

Laravel多商户平台银行提现字段存储修复方案

问题背景

开发类似Shutterstock的Laravel多商户图片交易平台时,在提现配置页(withdrawals-configure.blade.php)新增了Bank Code、Branch Code、Account Number、Account Name四个输入字段,但DashboardController的withdrawalConfigure方法无法将这些新字段的数据存入users表,需要调整代码实现数据的存储与更新。

前置准备:数据库字段添加

首先需要在users表中新增对应字段,可通过迁移文件实现:

Schema::table('users', function (Blueprint $table) {
    $table->string('bank_code', 4)->nullable();
    $table->string('branch_code', 4)->nullable();
    $table->string('ac_num')->nullable();
    $table->string('ac_name')->nullable();
});

执行迁移命令:

php artisan migrate

模型批量赋值配置

修改app/Models/User.php,将新增字段加入$fillable数组,允许Laravel批量赋值:

protected $fillable = [
    // 保留原有字段...
    'bank',
    'bank_code',
    'branch_code',
    'ac_num',
    'ac_name',
    // 其他字段...
];

控制器方法修改

更新DashboardController.php中的withdrawalConfigure方法,新增字段验证规则并完善保存逻辑:

public function withdrawalConfigure()
{
    if ($this->request->type != 'paypal' && $this->request->type != 'bank') {
        return redirect('user/dashboard/withdrawals/configure')->withError(__('misc.error'));
    }

    // PayPal提现逻辑(保持原有代码)
    if ($this->request->type == 'paypal') {
        $rules = [
            'email_paypal'  => 'required|email|confirmed',
        ];

        $this->validate($this->request, $rules);

        $user = User::find(auth()->id());
        $user->paypal_account = $this->request->email_paypal;
        $user->payment_gateway = 'PayPal';
        $user->save();

        return redirect('user/dashboard/withdrawals/configure')->withSuccess(__('admin.success_update'));

    } else if ($this->request->type == 'bank') {
        // 更新验证规则,包含新增字段
        $rules = [
            'bank' => 'required',
            'bank_code' => 'required|max:4',
            'branch_code' => 'required|max:4',
            'ac_num' => 'required',
            'ac_name' => 'required',
        ];

        $this->validate($this->request, $rules);

        $user = User::find(auth()->id());
        // 赋值所有银行相关字段
        $user->bank = $this->request->bank;
        $user->bank_code = $this->request->bank_code;
        $user->branch_code = $this->request->branch_code;
        $user->ac_num = $this->request->ac_num;
        $user->ac_name = $this->request->ac_name;
        $user->payment_gateway = 'Bank';
        $user->save();

        return redirect('user/dashboard/withdrawals/configure')->withSuccess(__('admin.success_update'));
    }
}

表单优化(可选)

原新增字段使用<textarea>不符合短文本输入场景,建议改为<input type="text">提升体验:

<div class="form-floating mb-3"> <!-- Bank Code -->
    <input type="text" class="form-control" placeholder="Bank Code" name="bank_code" id="input-bank_code" maxlength="4" value="{{ auth()->user()->bank_code }}">
    <label for="input-bank_code">Bank Code</label> 
</div>

<div class="form-floating mb-3"> <!-- Branch Code -->
    <input type="text" class="form-control" placeholder="Branch Code" name="branch_code" id="input-branch_code" maxlength="4" value="{{ auth()->user()->branch_code }}">
    <label for="input-branch_code">Branch Code</label>
</div>

<div class="form-floating mb-3"> <!-- Account Number -->
    <input type="text" class="form-control" placeholder="Account Number" name="ac_num" id="input-ac_num" value="{{ auth()->user()->ac_num }}">
    <label for="input-ac_num">Account Number</label>
</div>

<div class="form-floating mb-3"> <!-- Account Name -->
    <input type="text" class="form-control" placeholder="Account Name" name="ac_name" id="input-ac_name" value="{{ auth()->user()->ac_name }}">
    <label for="input-ac_name">Account Name</label>
</div>

内容的提问来源于stack exchange,提问作者Malindu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:07:07