美文网首页
Phalcon 查询时间及 导出订单 的思考与操作

Phalcon 查询时间及 导出订单 的思考与操作

作者: KoPa | 来源:发表于2018-05-22 01:08 被阅读0次

    最近在开发微信小程序商城的过程中,后端遇到了需要根据条件导出订单的需求。

    查询PHPExcel已经停止维护了,于是改用了Spreadsheet的composer。

    composer require phpoffice/phpspreadsheet

    查询时间条件使用了Carbon 的composer。

    composerrequirenesbot/carbon

    $cauthIden是我设置的唯一标识符,用来区分小程序对应的用户,具有唯一性。

    具体操作如下
    先引入Spreadsheet与Carbon

    ```

    use \PhpOffice\PhpSpreadsheet\Spreadsheet;

    use  \Carbon\Carbon;

    function getMonthData($date,$cauthIden)

    {

                    $spreadsheet = new Spreadsheet();

                    $sheet = $spreadsheet->getActiveSheet();

                    $orderData = $this->model . 'ShopOrder';

                    $first  =  strtotime($date);

                    $dates  =  explode('-',$date); //拆分post的日期,2018-05-18 变成数组date[0]=>2018,date[1]=>05....

                    $carbon    =  Carbon::create($dates[0],$dates[1],$dates[2],00,00);

                    $lastDay    =  $carbon->endOfMonth(); //该月最后一天

                    $lastDay    =  strtotime($lastDay); //转成时间戳

                    $parameters = "status = 0 and cauth_iden = '".$cauthIden."' and dates >".$first.' and dates < '.$lastDay; //查询当前月份开始

                    $order = $orderData::find( $parameters )->toArray();

                    $title = ['uid'=>'用户编号', 'trade_sn'=>'订单号','total_price'=>'总金额','express_status'=>'订单状态',

                        'nickName'=>'用户名', 'dates'=>'购买时间', 'status'=>'状态'];

                    $sheet->setCellValue('A1', $title['uid']);

                    $sheet->setCellValue('B1', $title['nickName']);

                    $sheet->setCellValue('C1', $title['trade_sn']);

                    $sheet->setCellValue('D1', $title['total_price']);

                    $sheet->setCellValue('E1', $title['dates']);

                    $sheet->setCellValue('F1', $title['express_status']);

                    $i = 2;

                    foreach ($order as $key )

    {

                            //查询uid对应的用户名,金额除以100

                            $usersData  =  $this->model.'Users';

                            $users  =  $usersData::find("status = 0 and id = ".$key['uid'])->toArray();

                            foreach($users as $k)

    {

                                $sheet->setCellValue('A'.$i, $key['uid']);

                                $sheet->setCellValue('B'.$i, $k['nickName']);

                                $sheet->setCellValue('C'.$i, $key['trade_sn']);

                                $sheet->setCellValue('D'.$i, date('Y-m-d H:i:s',$key['dates']));

                                $sheet->setCellValue('E'.$i, $key['total_price']/100);

                                $sheet->setCellValue('F'.$i, $key['express_status'] == 0 ?'未发货' :($key['express_status'] == 1?'已发货':'已签收'));

                                $i++;

                            }

    //

                    }

    //                foreach($user as $key)

    //                {

    //                    $sheet->setCellValue('A'.$i, $key['id']);

    //                    $sheet->setCellValue('B'.$i, $key['openId']);

    //                    $sheet->setCellValue('C'.$i, $key['reg_time']);

    //                    $sheet->setCellValue('D'.$i, $key['status']);

    //

    //                    $i++;

    //                }

                    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

                    header('Content-Disposition: attachment;filename='.date('Ymd').uniqid().".xlsx");

                    header('Cache-Control: max-age=0');

                    $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');

                    $writer->save('php://output');

                    exit();

                }

    ```

    相关文章

      网友评论

          本文标题:Phalcon 查询时间及 导出订单 的思考与操作

          本文链接:https://www.haomeiwen.com/subject/yppcjftx.html