Вы можете использовать собственное правило. Попробуйте что-то вроде этого:
public function rules()
{
return [
'first_name' => ['required', 'string'],
'last_name' => ['required', 'string'],
'email' => ['required', Rule::unique('clients')->ignore($this->client)],
'country_code' => ['required'],
'phone' => ['required', new IsValidPhoneNumber($this->country_code, $this->client)],
'receive_video_lessons' => 'required|boolean'
];
}
Затем в вашем пользовательском правиле проверки:
class IsValidPhoneNumber implements Rule
{
protected $countryCode;
protected $clientId;
public function __construct($countryCode, $clientId)
{
$this->countryCode = $countryCode;
$this->clientId = $clientId;
}
public function passes($attribute, $value)
{
return ! Client::where('country_code', $this->countryCode)
->where('phone', $value)
->where('client_id', '!=', $this->clientId)
->exists();
}
public function message()
{
return 'This :attribute is not valid.';
}
}
Возможно, вам придется массировать его, чтобы он работал, но вы поняли идею.