Php Laravel中的数字范围相交搜索
我有两列记录从和到 用户可以通过选择或输入fromantto值来过滤结果 如何正确地用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,但用户
$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:捕获
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。