【发布时间】:2014-06-28 00:21:15
【问题描述】:
在 Laravel 4 中,我构建了一个搜索表单。一个人可以提交的地方
电子邮件地址 从 - 至今 参考号
他们只能使用上述选项之一进行搜索;因为他们必须从他们想要搜索的下拉列表中进行选择。我用来完成这项工作的最终代码如下:
if(Input::get('from') && Input::get('to')){
$records = Applications::where('created_at', '>=', Input::get('from'))
->where('created_at', '<', date('Y-m-d', strtotime(Input::get('to'). ' + 1 days')))
->lists('id');
}elseif(Input::get('email') || Input::get('ref')){
$records = Applications::where('Application_number', '=', Input::get('ref'))
->where('email', '=', Input::get('email'), 'OR')
->lists('id');
}else{
$records = Applications::all()->lists('id');
}
符合我的要求,但我不太高兴这是最好的解决方案。
我也尝试使用此线程Laravel 4 eloquent WHERE with OR AND OR?中的任一解决方案
$result = User::where('created_at', 'LIKE', '%' . $search . '%')
->where('updated_at', 'LIKE', '%' . $search . '%', 'OR')
->where('user_first_name', 'LIKE', '%' . $search . '%', 'AND')
->where('user_any_field', 'LIKE', '%' . $search . '%')->get();
或
Model::where(function ($query) {
$query->where('a', '=', 1)
->orWhere('b', '=', 1);
})->where(function ($query) {
$query->where('c', '=', 1)
->orWhere('d', '=', 1);
});
但我一直得到的只是值不能为空,在搜索 from 和 to 时;电子邮件和参考工作正常。
【问题讨论】:
-
我没有收到你的问题,抱歉。您是否设法使其工作并想要更好的解决方案,或者有一些错误?
-
嗨浮士德,很抱歉我已经离开了一段时间,并认为在添加响应时我会收到一封电子邮件通知:-(所以我没有使用第一个代码 sn -p. 但是是的,我正在寻找一种更好的方法来完成解决方案,因为我认为以下两个 sn-ps 应该可以工作,但在我的情况下没有,并且认为这会提供更好的解决方案