Я использую вот так,
public function store(Request $req)
{
$column1 = $req->input('column1');
$column2 = $req->input('column2');
$column3 = $req->input('column3');
$column4 = $req->input('column4');
$whereData = [
['column1', $column1],
['column2', $column2],
['column3', $column3],
['column4', $column4]
];
$count = DB::table('yourtablename')->where($whereData)
->count();
if($count > 0){
// The combined is not unique
//send error message
}else{
//do whatever u need
}
}
Вы можете реализовать это и в методе загрузки AppServiceProvider
.
Добавьте этот код к вашему способу загрузки:
Validator::extend('uniqueofFourColumns', function ($attribute, $value, $parameters, $validator) {
$whereData = [
['column1', $value],
['column2', $parameters[0]],
['column3', $parameters[1]],
['column4', $parameters[2]]
];
$count = DB::table('yourtablename')->where($whereData)->count();
return $count === 0;
});
Тогда вы можете использовать uniqueofFourColumns
это правило везде, где вам нужно:
'column1' => 'uniqueofFourColumns:'.{{$request->column2}}.', '.{{$request->column3}}.', '.{{$request->column4}}