2015-06-19 9 views
16

Я вызываю URL с параметрами поиска, которые являются динамическими. Как я могу правильно сформировать Яркий запрос?Laravel: dynamic where clause with Elouquent

В теории:

  1. запроса
  2. запрос где (someParam1)
  3. запрос где (someParam2)
  4. запрос OrderBy (someParam3)
  5. запрос получить

Мне нужна такая структура, поэтому я могу использовать where where, если param существует. Если в Ларавеле есть какой-то другой способ, сообщите мне.

ответ

41

Это легко с Laravel. Просто сделать что-то вроде этого:

$query = User::query(); 

if ($this == $that) { 
    $query = $query->where('this', 'that'); 
} 

if ($this == $another_thing) { 
    $query = $query->where('this', 'another_thing'); 
} 

if ($this == $yet_another_thing) { 
    $query = $query->orderBy('this'); 
} 

$results = $query->get(); 
+0

И у меня есть проблемы с первой строки. Может случиться так, что там не будет никаких параметров :) Как я могу запустить запрос? –

+7

Если вы хотите начать голый запрос, просто выполните '$ query = User :: query()'. Затем вы можете добавить все условные элементы и получить результаты в конце. – wunch

+0

@wunch Я попробую, спасибо. –

0

Вы можете передать динамическое значение, ниже, например

$user_auctions = $this->with('userAuctions') 
       ->where('users.id', '=', $id) 
       ->get();