2013-10-04 6 views
0

Я новичок в laravel. Я пытаюсь создать запрос из списка выбора. Я получаю следующую ошибкуКак выполнить динамический запрос в Laravel 4

strtolower() ожидает параметр 1, чтобы быть строкой

Вот моя форма

 <form action="search" method="post" accept-charset="utf-8"> 
       <div class="form-group"> 

        <select name="temptype" class="form-control"> 
         <option value="" selected="selected">Select Temp Type</option> 
         <option value="hygienist" >Hygienist</option> 
         <option value="dentist" >Dentist</option> 
         <option value="dentalassistant" >Dental Assistant</option> 
        </select> 

       </div><!-- end username form group --> 
     </div><!-- end .modal-body --> 
     <div class="modal-footer"> 
      <input type="submit" name="submit" class="btn btn-primary" /> 
     </div> 
     </form> 

Вот мой маршрут

Route::post('search', function(){ 


    $temp = User::getTemps(); 

    return $temp; 


}); 

Здесь это метод в моей модели пользователя ...

public static function getTemps() 
    { 

     $type = array (

      'hygienist' => Input::get('hygienist'), 
      'dentist' => Input::get('dentist'), 
      'dentalassistance' =>Input::get('dentalassistance') 

     ); 


     $temps = DB::table('users') 
      ->select('usertype', $type) <---- I think this has to be a string but my question is how do I make this dynamic... How do I pass the string value from what the user selects and pass it into the query?> 
      ->get(); 

     return $temps; 
    } 

ответ

1

Ваша форма никогда не будет размещать гигиенист, стоматолог или dentalassistance. Таким образом, Input::get('hygienist') будет null. Форма отправит temptype с выбранным значением из списка выбора. То есть, если я пойду в эту форму, выберите Hygienist и нажмите «Отправить», вы получите Input::get('temptype') = "Hygienist".

Таким образом, вы должны изменить getTemps к:

public static function getTemps() 
{ 
    // Create a array of allowed types. 
    $types = array('hygienist', 'dentist', 'dentalassistance'); 

    // Get what type the user selected. 
    $type = Input::get('temptype'); 

    // Make sure it is a valid type. 
    if(!in_array($type, $types)) 
    { 
     return App::abort(500, "Invaild temptype."); 
    } 



    $temps = DB::table('users') 
     ->select('usertype', $type) 
     ->get(); 

    return $temps; 
} 
+0

Спасибо это сработало. Это была глупая ошибка, над которой сейчас работает. – elodev

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