如何在两列上设置唯一的验证规则

时间:2020-10-23 06:59:03

标签: laravel eloquent laravel-validation

我有一张表 city_regionmappings 。共有三列:

id | regionmasters_id | citymasters_id

1  |    22            |    444
2  |    23            |    445
3  |    24            |    544

我通过两个不同的表在上面的表中保存行。现在,我想通过两列(regionmasters_id和citymasters_id)的组合使行唯一。不应有相同的行,例如:

id | regionmasters_id | citymasters_id

2  |    24            |    544
3  |    24            |    544

我尝试过但没有得到结果。

public function store(Request $request)
    {
        $this->validate($request, [
            'region_id' => 'required',
            'city_id' => 'required|unique:city_regionmappings,regionmasters_id,NULL,citymasters_id' . $request->region_id,
        ],
        [
            'required' => 'This field is required'
        ]);
    }

1 个答案:

答案 0 :(得分:0)

我得到了答案:

public function store(Request $request)
    {
        $this->validate($request, [
            'region_id' => 'required',
            'city_id' => [
                'required',
                Rule::unique('city_regionmappings', 'citymasters_id')->where(function ($query) use ($request) {
                    return $query->where('regionmasters_id', $request->region_id);
                })
            ]
    }
相关问题