Laravel Проверка двух объединенных столбцов - PullRequest
0 голосов
/ 16 июня 2020

Я новичок в Laravel Мне нужна помощь в проверке. У меня есть два поля: одно для кода страны, а другое для номера телефона, и они хранятся отдельно в соответствующем столбце в базе данных. Я хочу подтвердить номер телефона как уникальный я хочу получить номер телефона (1234567) country_Code (+12), присоединиться к ним как один (+121234567), а затем проверить (уникальный) по столбцам db country_Code (+12) + phone (1234567). как я могу этого добиться?

вот мой метод правил проверки для запроса настраиваемой формы

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',Rule::unique('clients')->ignore($this->client)],
        'receive_video_lessons' => 'required|boolean'
    ];
}

1 Ответ

0 голосов
/ 16 июня 2020

Вы можете использовать собственное правило. Попробуйте что-то вроде этого:

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.';
    }
}

Возможно, вам придется массировать его, чтобы он работал, но вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...