Php 如果在记录之间,请检查金额

Php 如果在记录之间,请检查金额,php,mysql,laravel,Php,Mysql,Laravel,我有一个已计算的权重,以及一个包含数量范围的数据库表,现在我想检查计算的权重是否在表中的范围之间 我想在表中的一条记录中检查金额是否介于两者之间 例如,计算出的重量为505kg,如果介于weight\u from和weight\u to之间,它将在表中找到它,因此它将返回120个数量,因为505kg介于500和1000之间 运费表 +-----+---------------+--------------+-------------+ | id | weight_from | weigh

我有一个已计算的权重,以及一个包含数量范围的数据库表,现在我想检查计算的权重是否在表中的范围之间

我想在表中的一条记录中检查金额是否介于两者之间

例如,计算出的重量为
505kg
,如果介于
weight\u from
weight\u to
之间,它将在表中找到它,因此它将返回
120个数量
,因为
505kg
介于
500和1000之间

运费表

+-----+---------------+--------------+-------------+
| id  |  weight_from  |  weight_to   |   amount    |
+-----+---------------+--------------+-------------+
|  1  |      0.5      |      100     |     100     |
|  2  |      500      |      1000    |     120     |
|  3  |      1000     |      3000    |     180     |
+-----+---------------+--------------+-------------+
我发现了类似这样的东西,但它与我试图做的不同,因为它传递了一个数字,而没有得到数据库表的值

代码仅供参考

$fee = Fee::whereBetween('column', [1, 150])->first();
whereBetween()
用于在单个列中查找范围内的值。由于要在两个不同的列之间进行检查,因此检查需要明确

$weight=505;
$fee=费用::其中('weight_from','=',$weight)
->订货人(“重量自”)
->第一个();
如果(费用){
//用$fee->amount做某事;
}

你不应该使用
我现在知道了,我想分享这个简单但有用的解决方案。这种逻辑太混乱了

代码

$weight=505;
$fee=费用::其中('weight_from','','',$weight)
->第一个();
如果(费用){
//用$fee->amount做某事;
}
来自
weight_应小于(或等于)计算重量,而
weight_至
应大于计算重量

另外,如果下一个范围从相同的值开始,则使用
作为上限


感谢Laracasts的tykus和Michaolavec帮助我

我认为这不是我想要实现的,因为它没有搜索数据库记录中提供的值,我将只检查表中的单个
金额
,例如
505
,因此,它将检查
505
是否在表中的一条记录之间。您需要将1和150替换为您发送的值。我这样做了,但它将限制搜索到该值,因为
=
它将查找
weight\u from
大于或等于提供的权重的位置,并且
重量u至
小于或等于提供的重量。因此,如果提供的重量介于从/到之间。如果你要求的是不同的东西,它很不清楚,你应该用所需输入/输出的明确例子来澄清你的问题。根据我在你的问题中收集的数据,这完全符合你的要求。我更新的原始答案中的条件顺序是一个打字错误。。。上限仍然应该是
,这不就是相同的吗?
$weight = 505;
$fee = Fee::where('weight_from', '<=', $weight)
          ->where('weight_to', '>', $weight)
          ->first();
if ($fee) {
    // Do something with $fee->amount;
}