我不确定如果不先进行查询就可以做到这一点。
我有这样的事情:
$item_weight
此项目进入一个框,该框有自己的行$box->weight
,最大权重为$box->max_weight
。
我想要一个可以放入物品的盒子列表。
我知道我可以先执行查询然后使用foreach
进行计算,但我想知道是否有更简洁的方法来执行此操作。
这样的事情:
$boxes= Boxes::where('max_weight','>',$item_weight + $box->weight)
->orderBy('max_weight','asc')
->get();
答案 0 :(得分:2)
您可以使用whereRaw并将计算转移到数据库端:
$boxes= Boxes::whereRaw('boxes.max_weight - boxes.weight > ?', [$item_weight])
->orderBy('max_weight','asc')
->get();