关于 Model 查询的一个延伸问题.
今天在做一个功能统计的时候.因为有多个where条件查询.用了以下查询方式.
首先
$where=[];
这里是判端 $request->get(‘参数’),然后添加到where参数中.
$sql =Orders::where($where);
然后因为其他复杂的逻辑,比如判断 存在即查询:
if ($request->get('customer_id')) {
$sql->whereIn('customer_id', explode(',', $customer_id));
}
#最后
$sqlA = $sql;
$data = $sql->orderBy($order_field, 'desc')->paginate(20);
#求订单总数 :
$total = $data->total(); #订单总数
#成功单数.
$success_num = $sqlA->where(['is_success'=>1])->count();
这个$sqlA 却包含了 $sql->orderBy($order_field, ‘desc’)->paginate(20);的参数,导致统计数据不正确.
打印$sqlA 结构如图:
请教各位,这种是什么逻辑.或者是为什么不允许赋值给另一个变量.
最后我这边只能用以下方式解决当前问题.
$success_num = DB::table('orders')->where($where)where(['is_success' => 1])->count();
如有大神,请不吝赐教.跪谢.
推荐文章: