laravel 检查金额是不是在记录之间

Posted

技术标签:

【中文标题】laravel 检查金额是不是在记录之间【英文标题】:laravel check amount if in between the recordslaravel 检查金额是否在记录之间 【发布时间】:2021-02-12 08:34:50 【问题描述】:

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

我想检查金额是否在表中的一条记录之间。

例如计算出的权重是505kg,如果它在weight_fromweight_to 之间,它会在桌子上找到它,所以它会返回120 amount,因为505kg500 and 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();

【问题讨论】:

这不是和***.com/questions/64586967/…一样吗? 【参考方案1】:

whereBetween() 用于在单个列的范围内查找值。由于您在两个不同的列之间进行检查,因此检查需要明确。

$weight = 505;
$fee = Fee::where('weight_from', '<=', $weight)
          ->where('weight_to', '>=', $weight)
          ->orderBy('weight_from')
          ->first();
if ($fee) 
    // Do something with $fee->amount;

您不应使用&lt;,范围应包含在内。其原因与另一个答案相反,即“如果下一个范围从相同的值开始,则使用&gt; 作为上限”,该范围可能并不总是 与下一批的起始限制具有相同的上限(例如,提供的样本数据的范围是 0.5 到 100,但没有一个是 100-500)。如果没有,那么突然间你就失去了一个价值。最好使用orderBy() 来查找正确的记录。将其与first() 结合起来,您只会得到一条记录。

【讨论】:

我认为这不是我想要实现的,因为它没有在数据库记录中搜索提供的值,我只会检查表中的单个 amount,例如 505,所以它将检查505 是否在表中的一条记录之间。 嗯,您需要将 1 和 150 替换为您发送的值。 我做到了,但它只会将搜索限制在该值,因为 &gt;=&lt;= 它不会获得 5001000 之间的范围 它将找到weight_from 大于或等于提供的权重,并且weight_to 小于或等于提供的权重。因此,提供的重量在从/到的范围之间。如果您要求不同的东西,那很不清楚,您应该通过所需输入/输出的明确示例来澄清您的问题。根据我在您的问题中收集的数据,这完全符合您的要求。 我更新的原始答案中的条件顺序是一个错字...上限仍应为&lt;=,以防没有批次从该确切上限继续。 【参考方案2】:

我现在明白了,我想分享这个简单但有用的解决方案。这种逻辑太混乱了。

代码

$weight = 505;
$fee = Fee::where('weight_from', '<=', $weight)
          ->where('weight_to', '>', $weight)
          ->first();
if ($fee) 
    // Do something with $fee->amount;

weight_from 应小于(或等于)计算的权重,weight_to 应大于计算的权重

此外,如果下一个范围从相同的值开始,则使用 &gt; 作为上限。

感谢 Laracasts 的 tykus 和 MichalOravec 帮助我

【讨论】:

以上是关于laravel 检查金额是不是在记录之间的主要内容,如果未能解决你的问题,请参考以下文章

如何检查记录是不是已经存在,然后在 laravel 中更新或插入?

Laravel:检查记录ID是不是存在

Laravel 5.2 - 检查两个用户之间的对话是不是存在

laravel 在插入之前检查记录是不是存在,这是一种有效的方法

检查 Laravel 5.5 中是不是存在记录 [关闭]

检查 Laravel 中是不是存在记录不起作用