Проверка формы Laravel 5.0 уникальна для каждого отношения - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть модель Mailgroup с отношением один ко многим для Individual.

Теперь, когда я создаю нового Individual, я хочу убедиться, что это Individual уникально для этой конкретной почтовой группы.

В своей проверке формы я сделал это:

'individual_email' => 'required|unique:individuals|max:255',

Это работает хорошо, но проверяет всю базу данных, поэтому, если этот человек существует для 1 почтовой группы, он говорит, что он уже используется.

Теперь я читаю в документации laravel, которую вы можете добавить, где клаузулы в вашей валидации выглядят так:

'email' => 'уникально: пользователи, адрес электронной почты, NULL, id, account_id, 1'

В приведенном выше правиле в уникальную проверку будут включены только строки с account_id, равным 1.

Поэтому я хочу изменить свое правило на что-то вроде этого:

'individual_email' => 'required|unique:individuals,individual_email,NULL,id,mailgroup_id,'.$data['mailgroup_id'].'|max:255'

Но проблема в том, как я могу получить доступ к своим данным поста формы?потому что $ data не распознан.

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

попробуйте ниже:

'individual_email' => 'required|unique:individuals,individual_email,NULL,id,mailgroup_id,'.$this->get('mailgroup_id').'|max:255'
1 голос
/ 29 апреля 2019

Сделайте это через Запрос Класс:

use Illuminate\Validation\Rule;

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
    return [
        'individual_email' => [
            'required',
            Rule::unique('individuals', 'individual_email')
               ->where('mailgroup_id', $this->get('mailgroup_id')),
        ]
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...