Laravel 4动态数据库过滤器

时间:2014-09-11 13:39:02

标签: laravel laravel-4

我正在使用Laravel 4进行简单的编程,我想使用Laravel数据库流畅功能过滤我的数据库结果而且我被卡住了。

我有一个需要传递给select查询的过滤器:

$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

1 个答案:

答案 0 :(得分: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);    
}