2014-09-04 4 views
0

Я пытаюсь проверить адрес электронной почты в таблице моих клиентов. Существует столбец в таблице Customer называется марка, где эффективно и тот же адрес электронной почты может быть зарегистрирован в нескольких брендов, например:Laravel Validator уникальное значение

Email    Brand 
[email protected] firstsite.com 
[email protected] secondsite.com 

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

$rules = array('email' => 'required|email|unique:Customer,Email'); 

однако марка должна появиться в там кто-нибудь сказать, что письмо должно быть уникальным для клиента для текущей марки

Любая помощь очень ценится

ответ

0

$ правил = array ('email' => 'required | email | unique: Customer, Email'); это запросит вашу модель для поиска введенного сообщения электронной почты, если письмо уже присутствует, тогда появляется сообщение об ошибке. поэтому это не будет работать с потоком вашего приложения. вам нужно запустить sql-запрос, чтобы узнать, присутствует ли электронное письмо с вашим текущим брендом, если да, верните сообщение об ошибке, если не сохраните данные. что-то подобное

1

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

'email' => 'required|email|unique:Customer,Email,null,null,column,value' 

Проблема в том, что вам нужно ваш вклад бренда, чтобы создать правила, как это:

$rules['email'] = 'required|email|unique:Customer,Email,null,null,Brand,' . Input::get('Brand'); 

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

Более подробная информации здесь: http://laravel.com/docs/validation#rule-unique

Существует также пакет, который может помочь вам: https://github.com/felixkiss/uniquewith-validator

+0

Хорошо. Просто было бы полезно объяснить, почему и как, и что означает эта «нулевая, нулевая» часть. –

+0

Мой плохой, существует только один нуль, этот параметр должен игнорировать заданный идентификатор, поэтому вы можете установить значение null, если оно вам не понадобится. – Needpoule

+0

Не совсем, ваш код был прямо перед этим. Вам нужно «null, null», теперь после вашего редактирования это неверно. Я просто сказал, что вы должны добавить это объяснение, чтобы ответить, поэтому у него есть более ценная информация. –

0

Я бы для написания собственных пользовательских правил проверки. Правило пользовательской проверки будет более распространенным решением, и вы можете назвать его, как он наилучшим образом подходит. Он может быть создан с помощью Validator :: простираться() и закрытие, как это:

Validator::extend('awesome', function($field, $value, $params) 
{ 
    return $value == 'awesome'; 
}); 

или с помощью класса валидатора. Проведите исследование на эту тему, возможно, here (scroll to custom rules section) или любой другой источник, который вы найдете.

Смежные вопросы