I'm following this example from the docs to handle multiple sheets import.
My Controller:
public function import(Request $request) {
$file = $request->file('import')->store('/storage');
$import = new MultisheetContactsImport();
$import->import($file);
if ($import->failures()->isNotEmpty()) {
return $import->failures();
}
return $import->getRowCount();
}
My import class ContactsImport.php
namespace AppImports;
use AppModelsEmail;
use MaatwebsiteExcelConcernsToModel;
use MaatwebsiteExcelConcernswithHeadingRow;
use MaatwebsiteExcelConcernsSkipsOnError;
use MaatwebsiteExcelConcernsSkipsErrors;
use MaatwebsiteExcelConcernsImportable;
use MaatwebsiteExcelConcernsWithValidation;
use MaatwebsiteExcelConcernsSkipsOnFailure;
use MaatwebsiteExcelConcernsSkipsFailures;
use IlluminateSupportStr;
use IlluminateSupportCollection;
use MaatwebsiteExcelConcernsToCollection;
use IlluminateSupportFacadesValidator;
use Throwable;
class ContactsImport implements ToModel, withHeadingRow, SkipsOnError, WithValidation, SkipsOnFailure
{
private $rows = 0;
use Importable, SkipsErrors, SkipsFailures;
/**
* @param array $row
*
* @return IlluminateDatabaseEloquentModel|null
*/
public function model(array $row)
{
++$this->rows;
return new Email([
'apiKey' => Str::random(16),
'firstname' => $row['firstname'],
'lastname' => $row['lastname'],
'emailAddress' => $row['emailaddress'],
'businessType' => $row['businesstype'],
'allowed' => true,
'updates' => true,
'marketing' => true,
]);
}
public function getRowCount(): int
{
return $this->rows;
}
public function rules(): array
{
return [
'*.emailaddress' => ['email', 'unique:emails,emailaddress']
];
}
}
My Multisheet import class MultisheetContactsImport.php
class MultisheetContactsImport extends ContactsImport implements WithMultipleSheets
{
public function sheets(): array
{
return [
'Contacts' => new ContactsImport()
];
}
}
The methods failures and and getRowCount work fine if I use the ContactsImport class without multisheets however now I only get a response 0