Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个数字之间的拉威尔搜索_Php_Laravel_Laravel 5_Laravel Blade - Fatal编程技术网

Php 两个数字之间的拉威尔搜索

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

我目前在搜索控制器中具有以下功能。我还想检索空间价格在用户最小输入和最大输入之间的结果。如果用户没有输入最小值或最大值,或者如果用户输入最大值但没有最小值,我还希望查询能够工作,它将返回介于0和最大值之间的结果

$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
,无论如何,您都将发布默认值。因此,如果您使用的是Laravel
5.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
应该是占位符吗?