Php 两个数字之间的拉威尔搜索
我目前在搜索控制器中具有以下功能。我还想检索空间价格在用户最小输入和最大输入之间的结果。如果用户没有输入最小值或最大值,或者如果用户输入最大值但没有最小值,我还希望查询能够工作,它将返回介于0和最大值之间的结果Php 两个数字之间的拉威尔搜索,php,laravel,laravel-5,laravel-blade,Php,Laravel,Laravel 5,Laravel Blade,我目前在搜索控制器中具有以下功能。我还想检索空间价格在用户最小输入和最大输入之间的结果。如果用户没有输入最小值或最大值,或者如果用户输入最大值但没有最小值,我还希望查询能够工作,它将返回介于0和最大值之间的结果 $town = $_GET['town']; $category = $_GET['category']; $min = $_GET['min']; $max = $_GET['max']; $spaces = \App\Space::where([ ['space_town
$town = $_GET['town'];
$category = $_GET['category'];
$min = $_GET['min'];
$max = $_GET['max'];
$spaces = \App\Space::where([
['space_town', 'LIKE', '%' . $town . '%'],
['space_category', 'LIKE', '%' . $category . '%'],
])->get();
return view('search', compact('spaces'));
提前感谢,,
Jamie因此,首先,当您使用Laravel时,不要直接使用GET参数,而是通过框架调用它们
$min = $request->input('min');
因此,出于安全原因,您不会与框架抗争,也不会使用该函数
因此,当您需要一个默认值时,可以使用速记运算符或if语句定义一个值
在您的查询中使用
和,您可能需要类似whereBetween()的内容
$spaces = \App\Space::where(['space_town', 'LIKE', '%' . $town . '%'],
->whereBetween('price', [$min_price, $max_price])
->get();
在任何情况下,如果用户未选择任何值,您都将发送min\u price
和max\u price
,无论如何,您都将发布默认值。因此,如果您使用的是Laravel5.7.19
及更高版本,它将获取该值范围内的结果。
默认情况下,laravel附带名为的函数,其中
它将用于收集
我已经参考了post@https://laravel-news.com/laravel-5-7-19
$c = new Collection([
['v' => 1],
['v' => 2],
['v' => 3],
['v' => '3'],
['v' => 4]
]);
$this->assertEquals(
[
['v' => 2],
['v' => 3],
['v' => '3'],
['v' => 4]
],
$c->whereBetween('v', [2, 4])->values()->all()
);
全文敬请查收
[最好的方法是使用PHP条件检查是否给出了最大值和最小值。因此最终代码如下所示:
$town = $_GET['town'];
$category = $_GET['category'];
$min = empty($request->input('min')) ? 0 : $request->input('min');
$max = empty($request->input('max')) ? 0 : $request->input('max');
$query = \App\Space::where([
['space_town', 'LIKE', '%' . $town . '%'],
['space_category', 'LIKE', '%' . $category . '%'],]);
// check if any of max or min value is given
if($min!=0 || $max!=0 ){
$query = $query->whereBetween('space_price', array($min, $max));
}
$spaces = $query->get();
return view('search', compact('spaces'));
首先,您需要将max和min值设置为0,然后使用MySQL。如果用户不将min-max值设置为0,则会将其搜索为默认值0
从价格介于10和20之间的产品中选择*您应该动态附加到查询中…不熟悉laravel,$town
和$category
应该是占位符吗?