未定义属性:在一个函数中创建两张工作表时,请记住\LaravelPhpSpreadsheet\LaravelPhpSpreadsheet::$spreadsheet
我有一个函数需要创建两个单独的文件: 文件1的代码未定义属性:在一个函数中创建两张工作表时,请记住\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-
$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.