2015-04-30 3 views
1

Мне нужно выполнить уникальную проверку элемента с именем temp_name на основе другого значения столбца temp_mode. то есть temp_name должен быть уникальным, если значение temp_mode равно email. Я сделал, как правило, как этотединственное правило валидации laravel на основе другого значения столбца

'temp_name' => 'unique:templates,temp_name,NULL,temp_id,temp_mode,email'

где templates это имя дб. это не сработало. он всегда показывает This template name is already present для всех значений temp_mode. Я знаю, что будет какой-то другой способ добиться этого. может кто-нибудь, пожалуйста, дать мне идею решить эту проблему.

Редактировать

С ниже ответа я попробовал этот код

$rules = array(
     'temp_txt' => 'required', 

    ); 

    $validator = Validator::make(Input::all(),$rules); 
    $validator->sometimes('temp_name', 'unique:templates', function($input){ 
return $input->temp_mode == 'email'; 
}); 

Но это показывает мне ошибку

BadMethodCallException Method [sometimes] does not exist 

я должен устанавливать какие-либо дополнительные функции в мой проект для использования sometimes ??

ответ

0

Вы можете conditionally add validation rules с помощью sometimes:

$validator = Validator::make(...); 
$validator->sometimes('temp_name', 'unique:templates', function($input){ 
    return $input->temp_mode == 'email'; 
}); 
if($validator->passes()){ 
    // yay 
} 
+0

это правильно, если я дал код внутри функции ($ ввода), а как это 'вернуть $ вход-> temp_mode = Input :: получить ('temp_mode') ; '?? – Zammuuz

+0

Нет, это не имело бы смысла? Что случилось с моим кодом? Ах, вы имеете в виду, что значения должны быть «электронной почтой»? – lukasgeiter

+0

См. Обновленный ответ. – lukasgeiter

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