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

Laravel实现Group_Id与Group_Code创建唯一、更新跳过的验证方案咨询

你可以通过动态判断当前是新增还是更新操作来调整验证规则,示例代码如下:

控制器中直接验证的写法

// 公共验证规则
$rules = [
    'Group_Name' => 'required|string',
    'Currency' => 'required',
    'Country' => 'required',
    'State' => 'required',
    'City' => 'required',
];

// 自定义错误提示
$messages = [
    'Group_Id.unique' => 'group id/group code already exists',
    'Group_Code.unique' => 'group id/group code already exists',
];

// 按请求类型区分场景:POST对应新增,PUT/PATCH对应更新
if (request()->isMethod('post')) {
    // 新增场景加两个字段的唯一性校验
    $rules['Group_Id'] = 'required|unique:你的数据表名,Group_Id';
    $rules['Group_Code'] = 'required|unique:你的数据表名,Group_Code';
} else {
    // 更新场景Group_Code唯一性校验需要排除当前更新的记录
    $rules['Group_Code'] = 'required|unique:你的数据表名,Group_Code,' . $当前更新记录的主键ID;
    // 如果需要严格禁止修改Group_Id,可以加上下面的规则,传了Group_Id字段就会报错
    // $rules['Group_Id'] = 'prohibited';
}

// 执行验证
$validated = request()->validate($rules, $messages);

注意事项

  • 把代码中的你的数据表名替换为你实际存储分组数据的表名
  • 把$当前更新记录的主键ID替换为你要更新的那条记录的主键值,如果你用了路由模型绑定,比如路由参数是group,直接写$group->id即可
  • 两个字段的唯一性错误都绑定了同一个自定义提示,只要任意一个字段重复就会返回你要求的错误信息

如果使用更规范的表单请求类(FormRequest)实现,代码如下:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class GroupRequest extends FormRequest
{
    public function rules()
    {
        $rules = [
            'Group_Name' => 'required|string',
            'Currency' => 'required',
            'Country' => 'required',
            'State' => 'required',
            'City' => 'required',
        ];

        if ($this->isMethod('post')) {
            $rules['Group_Id'] = 'required|unique:groups,Group_Id';
            $rules['Group_Code'] = 'required|unique:groups,Group_Code';
        } else {
            $rules['Group_Code'] = 'required|unique:groups,Group_Code,' . $this->route('group')->id;
        }

        return $rules;
    }

    public function messages()
    {
        return [
            'Group_Id.unique' => 'group id/group code already exists',
            'Group_Code.unique' => 'group id/group code already exists',
        ];
    }
}

内容的提问来源于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 21:06:05