Laravel条件计数查询异常:需修正交易记录统计逻辑
解决Laravel Eloquent统计交易记录的条件错误问题
嘿,我一眼就发现问题所在啦——你需要统计buy_rate大于sell_rate的交易记录,但当前代码里的查询条件写反了,还有可以优化的小细节哦。
问题根源
你现在的代码用了where('buy_rate', '<', 'sell_rate'),这其实是在统计buy_rate小于sell_rate的记录,刚好和你的需求相反。另外,get()->count()会先把符合条件的所有记录加载到内存中再统计数量,不如直接调用count()方法,这样数据库层面就会完成统计,性能更优。
正确的统计代码(buy_rate > sell_rate)
这才是符合你需求的查询:
$user_id = Auth::user()->id; $profitable_trades_count = FinalTrade::where('user_id', $user_id) ->where('buy_rate', '>', 'sell_rate') ->count();
反向统计逻辑(sell_rate > buy_rate)
如果之后需要统计sell_rate大于buy_rate的记录(也就是你现有代码原本想要实现的逻辑),可以用这个优化后的版本:
$user_id = Auth::user()->id; $losing_trades_count = FinalTrade::where('user_id', $user_id) ->where('buy_rate', '<', 'sell_rate') ->count();
小提示:Laravel的where方法在处理等于条件时,可以省略第三个参数,直接写成where('user_id', $user_id),代码会更简洁哦~
内容的提问来源于stack exchange,提问作者user9752285
相关产品推荐
相关产品推荐

