orderid; $mobile = $request->mobile; $nickname = $request->nickname; $seller = $request->seller; $state = $request->state; $start = $request->start; $end = $request->end; $title = $request->title; $item_type = $request->item_type; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $orders = Order::when($seller, function ($query) use ($seller) { $query->whereHas('seller', function ($query) use ($seller) { $query->where('name', 'like', "%{$seller}%"); }); }) ->when($orderid, function ($query) use ($orderid) { $query->where('orderid', 'like', "%{$orderid}%"); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); }) ->when($title, function ($query) use ($title) { $goods_ids = Goods::where('title', 'like',"%{$title}%")->pluck('id'); $params_ids = GoodsParams::whereIn('goods_id',$goods_ids)->pluck('id'); $query->whereHas('details', function ($query) use ($params_ids) { return $query->whereIn('item_id',$params_ids); }); }) ->when($item_type, function ($query) use($item_type){ return $query->where('item_type',$item_type); }) ->when($state == '', function ($query){ return $query->where('state', '<>',Order::ORDER_CLOSED); }) ->when($state, function ($query) use ($state) { switch ($state) { case 'UNPAY': return $query->where('state', Order::ORDER_UNPAY); break; case 'PAID': return $query->whereIn('state', [Order::ORDER_PAID, Order::ORDER_DELIVER]); break; case 'DELIVERED': return $query->where('state', Order::ORDER_DELIVERED); break; case 'SIGNED': return $query->where('state', Order::ORDER_SIGNED); break; case 'CLOSED': return $query->where('state', Order::ORDER_CLOSED); break; case 'CANCEL': return $query->where('state', Order::ORDER_CANCEL); break; case 'COMPLETED': return $query->where('state', Order::ORDER_COMPLETED); break; default: break; } }) ->when($start && $end, function ($query) use ($start, $end) { $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); }) ->when($start && !$end, function ($query) use ($start) { $query->where('created_at', '>=', $start); }) ->when((!$start && $end), function ($query) use ($end) { $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); }) ->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); }) ->with(['seller', 'user.info']) ->orderBy('created_at', 'desc') ->paginate($numPerPage); return view('Admin::orders.allSellerOrder', compact('orders')); } }