在Laravel中使用分页动态地将where子句添加到查询中

时间:2014-04-30 16:54:06

标签: php laravel laravel-4

我有一个项目列表,我希望能够使用视图中的某些按钮进行过滤(显示,它们是活动的,仅显示以某个字母开头的那些等)并且我正在进行不同的查询每个可能的组合,一旦我有超过3个按钮进行过滤,就会失控。

所以我想根据按下的按钮在我的初始查询中添加一个where子句,但到目前为止我没有工作,我不知道它是否是分页:

(这是一个只有一个按钮的示例,我稍后会添加更多条件,但现在还没有工作)。

public function index()
{
    $hostesses = Hostess::orderBy('lastname', 'asc')
                ->paginate(30);

    if (Input::has('l')){
        $hostesses->where('lastname', 'like', Input::get('l').'%');
    }

    $this->layout->content = View::make('hostesses.index', compact('hostesses'));
}

我在视图上收到此错误:

ErrorException

call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Support\Collection' does not have a method 'where'

1 个答案:

答案 0 :(得分:5)

$hostesses = Hostess::orderBy('lastname', 'asc');

if (Input::has('l')){
    $hostesses->where('lastname', 'like', Input::get('l').'%');
}

$results = $hostessess->paginate(30);

那样的东西?