Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

vinubangs's avatar

how to set unique validation rules on two columns

I have a table city_regionmappings. Three columns are there:

id | regionmasters_id | citymasters_id

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

I am saving rows in above table by two different tables. Now I want to make row unique with combination of two columns (regionmasters_id and citymasters_id). There should not be same rows Like:

id | regionmasters_id | citymasters_id

2  |    24            |    544
3  |    24            |    544

I tried but not getting my result.

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'
        ]);
    }
0 likes
3 replies
SilenceBringer's avatar
Level 55

Hi @vinubangs check here subsection Adding Additional Where Clauses. Something like

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);
                })
            ]
    }
vinubangs's avatar

Class 'App\Http\Controllers\Admin\Rule' not found

1 like
vinubangs's avatar

I used:

use Illuminate\Validation\Rule;

1 like

Please or to participate in this conversation.