Laravel 根据 json 的范围获取属性值
Posted
技术标签:
【中文标题】Laravel 根据 json 的范围获取属性值【英文标题】:Laravel get attribute value based on range from json 【发布时间】:2019-03-12 09:54:03 【问题描述】:以下是在 Laravel 框架中编码的:
查询
$shipping = DB::table('shipping')->where('country',$delivery->country)->first();
$data= json_decode(json_encode($shipping),true);
结果
array (
'id' => 3,
'carrier' => 'EN',
'country' => 'AU',
'rates_json' => '"rates": ["international": ["zone4": ["to_kg": "2", "total": "1", "from_kg": "1", "to_kg": "4", "total": "2", "from_kg": "3"]]]',
)
在 mysql 数据库中,我将“rates_json”存储在“JSON”数据类型列中。属性“from_kg”和“to_kg”是一个范围。
如果值在范围之间,我打算检索总数。例如,如果值 1.5 介于 1 和 2 之间,则总数为 1。
感谢您的帮助。
谢谢。
【问题讨论】:
不要使用编码的解码。你有 toArray 功能。检查this 答案并在第一个语句中使用另一个 where 闭包。 【参考方案1】:由于您的问题不清楚, 我只能给你一个提示,你能做什么。
foreach (json_decode($data['rates_json'])->rates as $rates)
foreach ($rates->international as $international)
foreach ($international->zone4 as $zone)
if ($zone->from_kg <= $zone->total && $zone->total <= $zone->to_kg)
// do whatever you want here.
dump($zone->total);
如有任何调整,请告诉我。
【讨论】:
是的。这是我正在寻求的解决方案,我正在调整。 我将“$zone->total”替换为“$weight”,其中“$weight”是我提供的值。现在我想弄清楚,假设一个包裹的最大重量限制是 30 公斤,但我的包裹超过 30 公斤,那么我该如何计算剩余公斤的值,然后将它们相加。以上是关于Laravel 根据 json 的范围获取属性值的主要内容,如果未能解决你的问题,请参考以下文章