Laravel Eloquent只在需要的地方和订单条件

Dre*_*een 1 php laravel laravel-5 laravel-eloquent

请看下面的代码.这段代码我用Codeigniter编写.我需要强调的是条件和订单条件只有在设置了这些发布请求后才能起作用.否则就是我select * from student.

Codeigniter代码

$this->db->select('*');
$this->db->from('student');
if($this->input->post('first_name') != NULL){
    $first_name = $this->input->post('first_name');
    $this->db->where('first_name', $first_name);
}

if($this->input->post('last_name') != NULL){
    $last_name= $this->input->post('last_name');
    $this->db->where('last_name', $last_name);
}

if($this->input->post('order_by') != NULL){
    $order_by= $this->input->post('order_by');
    $this->db->order_by($order_by);
}

$query = $this->db->get();
Run Code Online (Sandbox Code Playgroud)

Laravel代码

我将用laravel做同样的事情.

$first_name = $request->input('first_name');
$last_name = $request->input('last_name');
$order_by = $request->input('$order_by');

$students = Student::orderBy($order_by)
      ->where('first_name',$first_name)
      ->where('last_name',$last_name);
      ->paginate(10);
Run Code Online (Sandbox Code Playgroud)

我能够运行上面的代码.所有发布请求时代码都有效.

但如果没有first_name帖子请求,我需要删除->where('first_name',$first_name).

如果我没有order_by发布请求,我需要删除orderBy($order_by).

如何使用上面的Laravel代码.

Nav*_*een 5

你可以使用喜欢,

$students = Student::latest();

if (isset($request->input('order_by'))) {
    $students->orderBy($order_by)
}
if (isset($request->input('first_name'))) {
          $students->where('first_name',$first_name);
}
if (isset($request->input('last_name'))) {
          $students->where('last_name',$last_name);
}
$students->paginate(10);
Run Code Online (Sandbox Code Playgroud)