2014-09-11 7 views
2

Я использую Laravel 4 для простого программирования, я хочу отфильтровать результат моей базы данных, используя базу данных Laravel, и я застрял.Laravel 4 динамический фильтр базы данных

У меня есть фильтр мне нужно передать в запросе на выборку:

$filter = Input::get('filter'); 
$txtfilter = Input::get('txtfilter'); 
$wh = ''; 
switch ($filter) { 
     case 'hostname': 
      $wh = "->where('hostname',$txtfilter)"; 
     case 'error': 
      $wh = "->where('error',$txtfilter)"; 
     default: 
      $wh = ""; 
} 

В основном я хочу, чтобы добавить выше $wh к ниже запросов

$logs = DB::table('sys_logs') 
    ->orderBy('created_at', 'DESC') 
    $wh 
    ->paginate(200); 

Как это сделать?

TQ

ответ

3

Возможно, что будет делать для примера вы дали нам:

$query = DB::table('sys_logs')->orderBy('created_at', 'DESC'); 

$filter = Input::get('filter'); 
$txtfilter = Input::get('txtfilter'); 

if ($filter, in_array('hostname','error')) 
{ 
    $query->where($filter, $txtFilter); 
} 

return $query->paginate(200); 

Но вы также можете сделать что-то вроде

foreach(Input::all() as $key => $value) 
{ 
    $query->where($key, $value);  
} 
Смежные вопросы