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

Laravel能否在同一控制器方法中同时处理AJAX提交的新增与更新操作?

实现方案

完全可以在同一个控制器方法内同时处理新增和更新逻辑,无需拆分方法,具体调整如下:

调整思路

核心逻辑是根据提交的主键Group_Id判断操作类型:

  • 如果请求中携带的Group_Id在数据库中存在匹配记录,执行更新操作
  • 如果Group_Id为空/不存在匹配记录,执行新增操作

具体代码修改

首先你需要先确保前端提交表单时,编辑场景下会把当前待修改记录的Group_Id一起通过AJAX传入后端,新增场景下该字段可传空值。

方式1:手动判断实现(可读性更强)

function () {
    if ($request->ajax()) {
        $data = $request->input(); // 注意原代码这里漏了分号,需要补上
        // 先查询是否有对应记录
        $organisationGroup = OrgrpOrganisationGroup::query()
            ->where('ORGRPID', $data['Group_Id'])
            ->first();
        // 没有查询到就新建实例
        if (!$organisationGroup) {
            $organisationGroup = new OrgrpOrganisationGroup;
            $organisationGroup->ORGRPID = $data['Group_Id'];
        }
        // 公共字段赋值
        $organisationGroup->ORGRPCode = $data['Group_Code'];
        $organisationGroup->ORGRPName = $data['Group_Name'];
        $organisationGroup->MSCONID = $data['Country'];
        $organisationGroup->MSCSTID = $data['State'];
        $organisationGroup->MSCCYID = $data['City'];
        $organisationGroup->MSCURID = $data['Currency'];
        $organisationGroup->save();
        // 后续可以加返回响应的逻辑
    }
}

方式2:使用Laravel内置updateOrCreate方法(代码更简洁)

function () {
    if ($request->ajax()) {
        $data = $request->input();
        OrgrpOrganisationGroup::updateOrCreate(
            ['ORGRPID' => $data['Group_Id']], // 匹配条件
            [ // 要更新/新增的字段
                'ORGRPCode' => $data['Group_Code'],
                'ORGRPName' => $data['Group_Name'],
                'MSCONID' => $data['Country'],
                'MSCSTID' => $data['State'],
                'MSCCYID' => $data['City'],
                'MSCURID' => $data['Currency'],
            ]
        );
    }
}

注意:如果使用updateOrCreate方法,需要先将上面赋值的所有字段加入OrgrpOrganisationGroup模型的$fillable属性中,避免批量赋值报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:27:00