如果用户输入不为空,Laravel-5会搜索某些字段

时间:2015-06-10 17:59:30

标签: php laravel-5

我正在尝试使用Laravel-5构建搜索查询,但我似乎生成了错误的sql。

这是我正在使用的代码:

BookingDates::where('status', 'Booked')->where('email', Input::get('email'))->where('name', 'like', '%' . Input::get('name') . '%')->where('date', $date)->get();

但有时用户可能不会提供电子邮件。发生这种情况时,应省略查询的这一部分(where('email', Input::get('email')))。例如,如果他们没有提供电子邮件,则会运行该查询:

BookingDates::where('status', 'Booked')->where('name', 'like', '%' . Input::get('name') . '%')->where('date', $date)->get();

使用Laravel-5有一种简单/漂亮的方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以在单独的步骤中构建查询:

$query = BookingDates::where('status', 'Booked')
                     ->where('name', 'like', '%' . Input::get('name') . '%')
                     ->where('date', $date);

if($email = Input::get('email')){
    $query->where('email', $email);
}

$result = $query->get();