2015-06-04 4 views
0

Я немного новичок в Laravel и искал документацию и не нашел ответа, который соответствует тому, что мне нужно сделать.Двухслойные условные запросы в Laravel

Я пытаюсь запустить гибкий поисковый запрос в базе данных продуктов.

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

Так что, когда ввод равен нулю, я просто заменю его «Нет (поле)« Введено ».

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

Быстрое представление SQL о том, что я делаю, это.

$results = DB::connection('sqlsrv')->select("SELECT TOP 500 * from dbo.SimpleOrderView 
WHERE ('". $name ."' = 'NoNameEntered' OR Name LIKE '%". $name ."%') 
AND ('". $sku ."' = 'NoSkuEntered' OR Sku LIKE '%". $sku ."%') 
AND ('". $description ."' = 'NoDescriptionEntered' OR ShortDescription LIKE '%". $description ."%')"); 

Так что запрос грязный, но работает как ожидалось. Я бы хотел использовать Eloquent, чтобы очистить его и сделать так, как он должен.

Заранее спасибо.

ответ

0
public function search(Request $request) 
{ 
    $inputs = $request->only('name', 'sku', 'description'); 
    $query = Class:take(500); 

    foreach ($inputs as $key => $value) 
    { 
     $new_key = ucfirst($key); 
     $new_value = "%{$value}%"; 
     if (empty($input)) 
      $query->where("No{$new_key}Entered", 'like', $new_value); 
     else 
      $query->where($new_key, $new_value); 
    } 

    return $query->get(); 
} 

это следует сделать трюк

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