未定义属性:在一个函数中创建两张工作表时,请记住\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet

未定义属性:在一个函数中创建两张工作表时,请记住\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet,php,laravel,phpspreadsheet,Php,Laravel,Phpspreadsheet,我有一个函数需要创建两个单独的文件: 文件1的代码 $orders = Order::whereBetween('started_at', [$starttime, $endtime]) ->orWhereBetween('completed_at', [$starttime, $endtime])->get(); foreach ($orders as $order) { $orderCount = count($order-

我有一个函数需要创建两个单独的文件: 文件1的代码

$orders = Order::whereBetween('started_at', [$starttime, $endtime])
        ->orWhereBetween('completed_at', [$starttime, $endtime])->get();
        foreach ($orders as $order) {
            $orderCount = count($order->stagnations);
            $order->stagnation_count = $orderCount;
            // get teamleaders and operators for each object
            $operators = [];

            $prevOperator = Operator_record::where([['line', $order->line], ['created_at', '<', $order->started_at]])->max('id');
            if ($prevOperator) {
                $operators[] = Operator::where('id',Operator_record::where('id', $prevOperator)->first()->operator)->first();
            }

            $records = Operator_record::where('line', $order->line)
                ->whereBetween('created_at', [$order->started_at, $order->completed_at])
                ->get();
            // return $records;
            foreach ($records as $record) {
                if ($record->operator) {
                    $operators[] = Operator::where('id',Operator_record::where('id', $record->operator)->first()->operator)->first();
                }
            }
            // return $operators;
            $order->operators = $operators;
            $stagnation_time = null;
            $stagnations = Stagnation_record::where('order', $order->id)->get();
            $diff = 0;
            // return $stagnations;
            foreach ($stagnations as $stagnation) {
                if ($stagnation->stopped_at == null) {
                    $stagnation->stopped_at == Carbon::now();
                }
                $start = new Carbon($stagnation->started_at);
                $stop = new Carbon($stagnation->stopped_at);
                $diff += $start->diffInSeconds($stop);
            }
            $seconds = $diff % 60;
            $minutes = floor($diff / 60);
            $hours = floor($minutes / 60);
            if ($hours !== 0) {
                $minutes = $minutes % 60;
            }
            $order->stagnationTime = $hours . ' hours ' . $minutes . ' minutes ' . $seconds . ' seconds';
            $order->stagnationTimeSeconds = $diff;
            // get teamleaders
            $teamleaders = [];

            $prevTeamleader = Teamleader_record::where([['line', $order->line], ['created_at', '<', $order->started_at]])->max('id');

            if ($prevTeamleader) {
                $teamleaders[] = Teamleader::where('id', Teamleader_record::where('id', $prevTeamleader)->first()->teamleader)->first();
            }

            $records = Teamleader_record::where('line', $order->line)
                ->whereBetween('created_at', [$order->started_at, $order->completed_at])
                ->get();

            foreach ($records as $record) {
                $teamleaders[] = Teamleader::where('id', Teamleader_record::where('id', $record->teamleader)->first()->teamleader)->first();
            }

            $order->teamleaders = $teamleaders;
        }
        $rows = [];
        $rows[] = [
            'id' => 'id',
            'order' => 'order',
            'sku' => 'order',
            'line' => 'line',
            'qty' => 'qty',
            'operators' => 'operators',
            'teamleaders' => 'teamleaders',
            'starttime' => 'starttime',
            'stagnations' => 'stagnations',
            'stagnation_time' => 'stagnation_time',
            'stagnation_time_seconds' => 'stagnation_time_seconds',
            'finished' => 'finished'
        ];
        foreach ($orders as $order) {
            $operators = '';
            foreach ($order->operators as $operator) {
                $operatorsArr = $operator->name. ',';
            }
            $operatorsArr = substr($operatorsArr, 0, -1);
            $teamleaders = '';
            foreach ($order->teamleaders as $teamleader) {
                $teamleadersArr = $teamleader->name. ',';
            }
            $teamleadersArr = substr($teamleadersArr, 0, -1);
            // get line
            $line = Line::where('id', $order->line)->first();
            $rows[] = [
                'id' => $order->id,
                'order' => $order->batch,
                'sku' => $order->sku,
                'line' => $line->display_name,
                'qty' => $order->qty,
                'operators' => $operatorsArr,
                'teamleaders' => $teamleadersArr,
                'starttime' => $order->created_at,
                'stagnations' => $order->stagnation_count,
                'stagnation_time' => $order->stagnationTime,
                'stagnation_time_seconds' => $order->stagnationTimeSeconds,
                'finished' => $order->completed_at
            ];
        }
        $count = 1;
        $phpSpreadsheet=app('laravel-phpSpreadsheet');
        $sheet= $phpSpreadsheet->init($exportSheet);
        $sheet = app('laravel-phpSpreadsheet')->init($exportSheet);
        collect($rows)->map(function ($res) use ($sheet, &$count) {
            $sheet->setCellValue('A' . $count, $res['id']);
            $sheet->setCellValue('B' . $count, $res['order']);
            $sheet->setCellValue('C' . $count, $res['sku']);
            $sheet->setCellValue('D' . $count, $res['line']);
            $sheet->setCellValue('E' . $count, $res['qty']);
            $sheet->setCellValue('F' . $count, $res['operators']);
            $sheet->setCellValue('G' . $count, $res['teamleaders']);
            $sheet->setCellValue('H' . $count, $res['starttime']);
            $sheet->setCellValue('I' . $count, $res['stagnations']);
            $sheet->setCellValue('J' . $count, $res['stagnation_time']);
            $sheet->setCellValue('K' . $count, $res['stagnation_time_seconds']);
            $sheet->setCellValue('L' . $count, $res['finished']);
            $count++;
        });
        $file = $phpSpreadsheet->saveLocal($exportSheet);
当我只运行第一个时,它就工作了。当我只运行第二个时,它就工作了。如果我同时运行它们,则会出现以下错误:

  ErrorException  : Undefined property: Remember\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet

  at C:\Users\cas\Documents\Dev\ODCE\Api\vendor\remember\laravel-spreadsheet\src\LaravelPhpSpreadsheet.php:72
    68|      * initialize cell style ,setTitle ,default width
    69|      */
    70|     public function init($param)
    71|     {
  > 72|         $this->spreadsheet->getDefaultStyle()->applyFromArray($this->alignmentConfig());
    73|         $sheet = $this->spreadsheet->getActiveSheet();
    74|         $this->setStyle($sheet);
    75|         $sheet->setTitle(config("laravel-phpSpreadsheet.columns.$param.title"));
    76|         $sheet->getDefaultColumnDimension()->setWidth(config("laravel-phpSpreadsheet.style.width") ?? 10);

  Exception trace:

  1   Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined property: Remember\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet", "C:\Users\cas\Documents\Dev\ODCE\Api\vendor\remember\laravel-spreadsheet\src\LaravelPhpSpreadsheet.php", ["odce-morning"])
      C:\Users\cas\Documents\Dev\ODCE\Api\vendor\remember\laravel-spreadsheet\src\LaravelPhpSpreadsheet.php:72

  2   Remember\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::init("odce-morning")
      C:\Users\cas\Documents\Dev\ODCE\Api\app\Jobs\ShiftOrderExport.php:181

  Please use the argument -v to see more details.

首先我不知道为什么会发生这种情况,我还尝试创建一个新函数,将第二个文件的代码放在其中,然后在那里调用它,但这也不起作用。

修复类初始化。你为我从图书馆的文档中复制了错误的代码。。
  ErrorException  : Undefined property: Remember\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet

  at C:\Users\cas\Documents\Dev\ODCE\Api\vendor\remember\laravel-spreadsheet\src\LaravelPhpSpreadsheet.php:72
    68|      * initialize cell style ,setTitle ,default width
    69|      */
    70|     public function init($param)
    71|     {
  > 72|         $this->spreadsheet->getDefaultStyle()->applyFromArray($this->alignmentConfig());
    73|         $sheet = $this->spreadsheet->getActiveSheet();
    74|         $this->setStyle($sheet);
    75|         $sheet->setTitle(config("laravel-phpSpreadsheet.columns.$param.title"));
    76|         $sheet->getDefaultColumnDimension()->setWidth(config("laravel-phpSpreadsheet.style.width") ?? 10);

  Exception trace:

  1   Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Undefined property: Remember\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet", "C:\Users\cas\Documents\Dev\ODCE\Api\vendor\remember\laravel-spreadsheet\src\LaravelPhpSpreadsheet.php", ["odce-morning"])
      C:\Users\cas\Documents\Dev\ODCE\Api\vendor\remember\laravel-spreadsheet\src\LaravelPhpSpreadsheet.php:72

  2   Remember\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::init("odce-morning")
      C:\Users\cas\Documents\Dev\ODCE\Api\app\Jobs\ShiftOrderExport.php:181

  Please use the argument -v to see more details.