就是想在订单表里面查询某一用户所有订单数、昨日订单数、今日订单数这三个结果 第一种方式就是查询一次 然后foreach遍历查找符合条件的数据
第二种就是直接查询三次得到想要的结果 哪种更节约性能?如果是第一种的话还有简单的写法吗?有没有函数可以得到符合条件的结果 不用遍历?
$res=Order::where('uid',$uid)->get()->toArray();//某用户历史订单
$todayTime=mktime(0,0,0,date('m'),date('d'),date('Y'));
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
static $t=0; //今日总的订单
static $y=0; //昨日总的订单
foreach ($res as $k => $v) {
if($v['time']>$todayTime){
$t+=1;
}
if($res[$k]['time']>$beginYesterday&&$res[$k]['time']<$endYesterday){
$y+=1;
}
}
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
$todayTime=mktime(0,0,0,date('m'),date('d'),date('Y'));
$res=Order::where('uid',$uid)->get()->toArray();//总的订单
$res2=Order::where('uid',$uid)->where('time',>,$todayTime)->get()->toArray();//今日总的订单
$res3=Order::where('uid',$uid)->where('time',>,$beginYesterday)->where('time',<,$endYesterday)->get()->toArray();//昨日总的订单
既然只是取订单数,应该直接用 count,而不是用 get 去取结果集。
使用查询分组,把两天的按照日期进行分组并 count ,一条语句就可以取出来结果。