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

Laravel-8 请求验证规则如何实现companyName与country_id联合唯一

你需要使用Laravel内置的Rule::unique验证规则实现联合唯一校验,操作如下:

  1. 先在表单请求类的顶部引入对应命名空间:
use Illuminate\Validation\Rule;
  1. 修改companyName的验证规则,追加联合唯一约束,以下示例默认你存储公司数据的表名为companies,如果实际表名不同请自行替换:
public function rules()
{
    return [
        //company
        'companyName' => [
            'required',
            'string',
            'min:3',
            'max:100',
            // 联合唯一校验:同一个country_id下companyName不允许重复
            Rule::unique('companies')
                ->where(function ($query) {
                    return $query->where('country_id', $this->input('country_id'));
                })
        ],
        'country_id' => [
            'nullable',
        ],
    ];
}

额外适配场景说明

  • 如果是更新数据的场景,需要忽略当前正在编辑的记录,避免触发自身重复的校验错误。假设你的路由参数中传递的公司ID参数名为company,可以按如下写法调整:
Rule::unique('companies')
    ->where(function ($query) {
        return $query->where('country_id', $this->input('country_id'));
    })
    ->ignore($this->route('company'))
  • 当country_id为null时,上述规则也能正常生效,会匹配数据库中country_id is null的记录做唯一性校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:21:03