zoukankan      html  css  js  c++  java
  • laravel GROUP_CONCAT使用方法

    DB::raw('GROUP_CONCAT(pp.sku SEPARATOR ",") sku')
    <?php
          $query = ProductPool::query();
            $pageNum = !empty($parameters['per_page_num']) ? $parameters['per_page_num'] : 20;
            $start_time = $parameters['start_time'] ? $parameters['start_time'] : Date("Y-m-d", strtotime("-7 day"));
            $end_time = $parameters['end_time'] ? $parameters['end_time'] : Date("Y-m-d");
            do {
                $start_time = Date("Y-m-d", strtotime('+1 day', strtotime($start_time)));
                $time_arr[] = $start_time;
            } while ($start_time < $end_time);
            $spuArr = explode_to_arr(',', $parameters['spu']);
            $query->when($spuArr, function ($q, $spuArr) {
                return $q->whereIn('pp.spu', $spuArr);
            });
            if (!empty($parameters['done_at_start']) && !empty($parameters['done_at_end'])) {//完成时间范围
                $query->whereBetween('pp.done_at', [$parameters['done_at_start'], $parameters['done_at_end']]);
            }
            if (!empty($parameters['cost_at_start']) && !empty($parameters['cost_at_end'])) {//成本范围
                $query->whereBetween('pp.buy_price', [$parameters['cost_at_start'], $parameters['cost_at_end']]);
            }
            if (!empty($parameters['weight_at_start']) && !empty($parameters['weight_at_end'])) {//重量范围
                $query->whereBetween('ns.weight', [$parameters['weight_at_start'], $parameters['weight_at_end']]);
            }
            //1.为新品 2.不是新品
            if (!empty($parameters['is_new'])) { //是否为新品
                $times = date("Y-m-d H:i:s", strtotime("-3 month"));
                if ($parameters['is_new'] == 1) { //1 是 2 否
                    $query->where('pp.done_at', '>=', $times);
                } else {
                    $query->where('pp.done_at', '<', $times);
                }
            }//同时存在
            if (!empty($parameters['shop_id']) && !empty($parameters['item_id'])) {
                $productSkus = LazadaOnlineListing::from('aliexpress_online_listing AS a')
                    ->leftJoin('aliexpress_online_listing_variant AS b', 'a.id', '=', 'b.listing_online_id')
                    ->whereIn('a.shop_id', $parameters['shop_id'])
                    ->whereIn('a.aliexpress_product_id', $parameters['item_id'])
                    ->distinct()
                    ->pluck('b.sku_code')
                    ->toArray();
                $query->whereIn('pp.sku', $productSkus);
            } else if (!empty($parameters['item_id']) || !empty($parameters['shop_id'])) {
                $querys = LazadaOnlineListing::query();
                if (!empty($parameters['item_id'])) {
                    $parameters['item_id'] = explode_to_arr(',', $parameters['item_id']);
                    $querys->whereIn('a.aliexpress_product_id', $parameters['item_id']);
                }
                if (!empty($parameters['shop_id'])) {
                    $querys->whereIn('a.shop_id', $parameters['shop_id'])->distinct();
                }
                $productSkuss = $querys->from('aliexpress_online_listing AS a')
                    ->leftJoin('aliexpress_online_listing_variant AS b', 'a.id', '=', 'b.listing_online_id')
                    ->pluck('b.sku_code')
                    ->toArray();
                foreach ($productSkuss as &$parameter) {
                    if (strrpos($parameter, "@#") == true) {
                        $parameter = substr($parameter, 0, strrpos($parameter, "@#"));
                    }
                    if (strrpos($parameter, "*") == true) {
                        $parameter = substr($parameter, 0, strrpos($parameter, "*"));
                    }
                    if (strrpos($parameter, "+") == true) {
                        $parameter = substr($parameter, 0, strrpos($parameter, "+"));
                    }
                }
                $query->whereIn('pp.sku', $productSkuss);
            }
            $product = $query->from(DB::raw('nt_product_pool AS pp FORCE INDEX (`done_at`)'))
                ->where('pp.sale_state',1)
                ->where('pp.is_tort',0)
                ->groupBy('pp.spu')
                ->orderBy('pp.done_at', 'desc')
                ->paginate($pageNum, ['pp.spu',DB::raw('GROUP_CONCAT(pp.sku SEPARATOR ",") sku'),'pp.buy_price as price', 'pp.done_at', 'pp.pack_weight as weight']);

     

     以spu分组,然后把多个sku合并到一个字段里面去,用逗号分开

  • 相关阅读:
    Python 函数基础4 迭代器、生成器、枚举类型
    Python函数基础3 函数对象、名称空间、装饰器
    Python 函数基础2 实参与形参
    Python 函数基础1 定义、分类与嵌套使用
    Python 文件操作
    Python 字符编码、文件操作1
    Python 元组、字典、集合
    python 数据类型及内置方法
    Python 流程控制
    Python 基本数据类型、运算符
  • 原文地址:https://www.cnblogs.com/kevin-yang123/p/14577939.html
Copyright © 2011-2022 走看看