Skip to main content

CheckExistNameRule

Validation rule used to prevent duplicate names in geography entities.

It supports parent-scoped uniqueness:

  • Province name must be unique within a country
  • City name must be unique within a province
  • District name must be unique within a city

Namespace

JobMetric\Location\Rules\CheckExistNameRule

Constructor

new CheckExistNameRule(string $model, ?int $object_id = null, ?int $parent_id = null)

Usage examples

Country (global uniqueness)

use JobMetric\Location\Models\Country as CountryModel;
use JobMetric\Location\Rules\CheckExistNameRule;

'name' => [
'required',
'string',
new CheckExistNameRule(CountryModel::class),
],

Province (unique within country)

use JobMetric\Location\Models\Province as ProvinceModel;

$countryId = $this->input('country_id');

'name' => [
'required',
'string',
new CheckExistNameRule(ProvinceModel::class, object_id: null, parent_id: $countryId),
],

Update (exclude current row)

new CheckExistNameRule(ProvinceModel::class, object_id: $provinceId, parent_id: $countryId)

Notes

The rule implements DataAwareRule to reliably read the parent id from the validated payload when used via dto(...).