Yii2框架将数据库内容快速导出excel表的方法整理,生成csv格式表格

Yii2框架将数据库内容快速导出excel表的方法整理,生成csv格式表格



//此为调用当前的方法 传入一个id值 self::$get['id']
$jiangpin_list = $this->getmemberjiangpinlist(self::$get['id']);
$csv_name="我是表格";
//得到数据后,将数据传送到导表函数中
self::exportCsv($jiangpin_list, $csv_name);



  //查询数据内容
    public function getMemberJiangpinlist($ai_id)
    {
        
        //得到活动实例的信息
        $qipamember_jiangpinwhere = " ai_id=" . $ai_id . " and is_false=0 ";
        $qipamember_jiangpinay = MemberJiangpin::find()
            ->alias('mp')
            ->select(new Expression('mj.id,mj.member_id,mj.jiangpin_id,mj.status,mj.create_time,mj.update_time,mj.shop_id'))
            ->where($qipamember_jiangpinwhere)
            ->asArray()
            ->orderBy(' id ASC')
            ->all();

       //若无数据,则直接返回空
        if (!$qipamember_jiangpinay) {
            return [];
        }

        $prizeIds = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'jiangpin_id')))) ?: 0;
        //查询奖品名称
        $prizeInfoTmp = AgencyPrize::find()->select("id,prize_name")->where("id in ({$prizeIds})")->asArray()->all();
        foreach ($prizeInfoTmp as $k => $v) {
            $prizeInfo[$v['id']] = $v['prize_name'];
        }


        //查询订单相关
        $gudong_coupon_ids = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'id')))) ?: 0;
        $orderInfoTmp = SaleOrder::find()->select("id,store_id,sale_id,create_time,gudong_brand,gudong_coupon,gudong_num,customer_name")->where("gudong_coupon in ({$gudong_coupon_ids})")->asArray()->all();


        //导购信息
        $qipauserIds = implode(",", array_unique(array_filter(array_column($orderInfoTmp, 'sale_id')))) ?: 0;
        $qipauserinfoTmp = QipaUser::find()->select("id,phone")->where("id in ({$qipauserIds})")->asArray()->all();
        foreach ($qipauserinfoTmp as $k => $v) {
            $qipauserinfo[$v['id']] = $v['phone'];
        }

        foreach ($orderInfoTmp as $k => $v) {
            $orderInfoTmp[$k]['qipa_user_phone'] = $qipauserinfo[$v['sale_id']];
        }


        foreach ($orderInfoTmp as $k => $v) {
            $hxShopInfo[$v['gudong_coupon']] = $v;
        }


        //这个是中将门店id
        $qipashopIds = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'shop_id')))) ?: 0;
        $qipashopIds .= ',' . (implode(",", array_unique(array_filter(array_column($orderInfoTmp, 'store_id')))) ?: 0);
        $qipashopIds = $qipashopIds ?: 0;
        $allShopsInfo = [];
        $allShopsInfoTmp = QipaShop::find()->alias("s")
            ->select("s.id,s.name,s.agency_id,cu.user_name,cu.phone,s.province_id,s.city_id,s.country_id")
            ->leftJoin("mdz_company_user cu", "cu.id=s.user_id")
            ->where("s.id in ({$qipashopIds})")->asArray()->all();
        foreach ($allShopsInfoTmp as $k => $v) {
            $allShopsInfo[$v['id']] = $v;
        }


        $agencyIds = implode(",", array_column($allShopsInfo, 'agency_id')) ?: 0;
        $allAgencysTmp = QipaAgency::find()->alias('a')
            ->select("a.id,a.company_name,a.post_id,cu.user_name,cu.phone ")
            ->leftJoin("mdz_company_user cu", 'a.user_id=cu.id')
            ->where("a.id in ({$agencyIds})")
            ->asArray()->all();

        $qipaallAgencys = [];
        foreach ($allAgencysTmp as $k => $v) {
            $qipaallAgencys[$v['id']] = $v;
        }


      

        //会员
        $memberIds = implode(",", array_unique(array_filter(array_column($qipamember_jiangpinay, 'member_id')))) ?: 0;
        $memberInfoTmp = Member::find()->select("id,member_phone")->where("id in ({$memberIds})")->asArray()->all();
        foreach ($memberInfoTmp as $k => $v) {
            $memberInfo[$v['id']] = $v['member_phone'];
        }


        foreach ($qipamember_jiangpinay as $k => $v) {

            

            $dataCSV['province_name'] = $allProvince[$allShopsInfo[$v['shop_id']]['province_id']];
            $dataCSV['city_name'] = $allCity[$allShopsInfo[$v['shop_id']]['city_id']];
            $dataCSV['country_name'] = $allCountry[$allShopsInfo[$v['shop_id']]['country_id']];

            $dataCSV['agency_name'] = $qipaallAgencys[$allShopsInfo[$v['shop_id']]['agency_id']]['company_name'];
            $dataCSV['agency_user_name'] = $qipaallAgencys[$allShopsInfo[$v['shop_id']]['agency_id']]['user_name'];
            $dataCSV['agency_user_phone'] = $qipaallAgencys[$allShopsInfo[$v['shop_id']]['agency_id']]['phone'];

            $dataCSV['shop_name'] = $allShopsInfo[$v['shop_id']]['name'];

            $dataCSV['prize_name'] = $prizeInfo[$v['jiangpin_id']];

            $dataCSV['win_time'] = $v['create_time'];

            $dataCSV['user_mobile'] = $memberInfo[$v['member_id']];

            $dataCSV['customer_name'] = $hxShopInfo[$v['id']]['customer_name'] ?: '暂无';

            $dataCSV['qipa_user_phone'] = $hxShopInfo[$v['id']]['qipa_user_phone'] ?: '暂无';

            $dataCSV['gudong_num'] = $hxShopInfo[$v['id']]['gudong_num'] ?: '暂无';
            $dataCSV['gudong_brand'] = $hxShopInfo[$v['id']]['gudong_brand'] ?: '暂无';
            $dataCSV['add_time'] = $hxShopInfo[$v['id']]['create_time'] ?: '暂无';
            $dataCSV['buy_shop_name'] = $allShopsInfo[$hxShopInfo[$v['id']]['store_id']]['name'] ?: '暂无';
            $data[] = $dataCSV;
        }

        unset($qipamember_jiangpinay);


        return $data;

    }


    //导出CSV
    private static function exportCsv($data, $csv_name)
    {

        $title = [ '省份', '地级市', '区县', '奇葩250公司全称', '奇葩250联系人', '奇葩250联系电话', '店铺名称', '活动奖品', '中奖时间', '用户手机号', '顾客名称', '导购手机号', '古董型号', '古董分类', '购买时间', '下单门店'];
        // 头部标题
        $fileName = $csv_name . '.csv';

        $header = implode(',', $title) . PHP_EOL;
        $content = '';
        foreach ($data as $k => $v) {
            $content .= implode(',', $v) . PHP_EOL;
        }
        $csvData = $header . $content;

        print(chr(0xEF) . chr(0xBB) . chr(0xBF));
        header("Content-type:text/csv;");
        header("Content-Disposition:attachment;filename=" . $fileName);
        header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
        header('Expires:0');
        header('Pragma:public');
        echo $csvData;
        die;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值