Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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 Laravel中的数字范围相交搜索_Php_Laravel - Fatal编程技术网

Php Laravel中的数字范围相交搜索

Php Laravel中的数字范围相交搜索,php,laravel,Php,Laravel,我有两列记录从和到 用户可以通过选择或输入fromantto值来过滤结果 如何正确地用Laravel实现这一点。 我现在拥有的很简单 $query->where("field_to", '<=', $field_to); $query->where("field_from", '>=', $field_from); $query->where(“field\u to”、“=”、$field\u from); 但这将不起作用,例如,如果数据库中的值为10和100,但用户

我有两列记录 用户可以通过选择或输入fromantto值来过滤结果 如何正确地用Laravel实现这一点。 我现在拥有的很简单

$query->where("field_to", '<=', $field_to);
$query->where("field_from", '>=', $field_from);
$query->where(“field\u to”、“=”、$field\u from);

但这将不起作用,例如,如果数据库中的值为10和100,但用户输入50和200。我需要一些交叉口检查。或者我过度设计了一些东西?

你必须使用这样的东西:

$field_to=50;
$field_from=200;
$query->where(函数($query)use($field\u from){
$query->where('field\u from'、'='、$field\u from');
})
->orWhere(函数($query)使用($field\u to){
$query->where('field\u from'、'='、$field\u to');
});
这将捕获您的场景。例如,如果数据库中的记录为50和100,并且用户输入以下值:

  • 55和70:捕获
  • 70和150:捕获
  • 150和200:未捕获
  • 20和30:未捕获
  • 20和75:捕获

从到的字段和从到字段用于什么?它定义了公司的利润范围,例如可以是1000-3000。因此,如果数据库中的值是10和100,用户输入50和200,结果应该是空的,但如果他们输入15和25,则应该显示一个正确的结果?这很容易,但我认为它在第一种情况下不应该是空的,因为50-200有50,51,52,53。。。这是在10-100.Hm的范围内,不知道为什么,但在数据库中仍然得到奇怪的结果有0和10,这个查询计数0:选择count(*)作为聚合自
ads
,其中(
employees\u count\u from
=“50”)和
status
在('publish')中提供的范围是50和50<代码>员工数量从
小于50和
员工数量到
大于50,状态为
发布
。顺便说一下,这个查询不是我在回答中提供的查询,您也必须使用
。还有一件你用过的绳子。您应该使用像
50
而不是
'50'
@RomkaLTU这样的数字,所以您的查询应该是这样的:
选择count(*)作为来自广告的聚合,其中((employees\u count\u from=50)或((employees\u count\u from=100))和状态在('publish')
是相同的,只是不同的字段名。如果用户提供50,它将找不到任何东西。在数据库中有0和10。无需添加条件来省略额外的where。