我正在使用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
答案 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);
}