Laravel统计特定order_id行数异常,求正确实现方法
问题原因与解决方法
你的问题出在firstOrFail()的使用上:
firstOrFail()会返回匹配条件的单条模型实例,而非查询构造器或结果集合。在这个单个实例上调用count()时,它会直接统计整个client_has_orders表的总行数,这就是你得到全表数量的原因。
正确写法1:直接统计(推荐)
直接在查询构造器上调用count(),会生成精准的统计SQL,性能最优:
$rowCount = clientHasOrder::where('order_id', $id)->count(); dd($rowCount);
正确写法2:先取集合再统计(若需后续使用记录)
如果需要先获取所有匹配的记录,再统计数量,可先用get()获取结果集合,再调用集合的count()方法:
$clientOrders = clientHasOrder::where('order_id', $id)->get(); $rowCount = $clientOrders->count(); dd($rowCount);
内容的提问来源于stack exchange,提问作者laraCoder
相关产品推荐
相关产品推荐

