2015-11-23 4 views
1

Это мой запрос, который я использую, чтобы сделать валидациюLaravel Уникальный Validation, в котором положение

$hashcheck = MyTable::where('hashcode', $input['hashcode']) 
->whereIn('status',['created', 'dispatched', 'viewed']) 
->get(); 

я могу поставить это в качестве проверки

'hashcode'=> 'unique:my_table,hashcode,NULL,NULL,status,dispatched', 

Это создает SQL как следующие для проверки

select count(*) as aggregate from `invoice_details` where `invd_hashcode` = ? and `invd_status` = ? 

Итак, это работает только для одного значения статуса dispatched, но я не могу сделать это ein вроде положения. Есть ли способ сделать это?

ответ

0

Нет, в настоящее время невозможно использовать стандартные правила Laravel. Но вы можете определить свои собственные правила проверки и сделать запрос к базе данных есть: http://laravel.com/docs/5.1/validation#custom-validation-rules

правило проверки определяются следующим образом:

Validator::extend('foo', function($attribute, $value, $parameters, $validator) { 
      return $value == 'foo'; 
     }); 

где foo это имя правила проверки.

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

я не согласен. Логика проверки приложения должна иметь одинаковую структуру по всему вашему коду ради понятности вашего приложения. Он не должен распространяться на ваш код, иногда являясь правилом проверки Laravel, иногда простым сравнением, а иногда и вызовами базы данных.

+1

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Обзор] (/ review/low-quality-posts/10307034) – user3071284

+0

@ user3071284 Поскольку это официальная документация, я думаю, что эта ссылка является законным ответом. Или нет? –

+0

Ссылка, вероятно, хорошая, но как определить правило проверки следует включить в строку здесь в ответе на StackOverflow. – user3071284

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