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;
}