Eu criei a classe de objeto de importação e especifiquei as preocupações de ToCollection. Ao executar Excel :: import, recebo um erro mostrado em Actual Behavior
abaixo.
Não use um banco de dados transacional. Usamos MongoDB.
Além disso, a importação do Model não foi especificada e o pacote não deveria estar fazendo nenhuma preparação de banco de dados, que deveria ser tratada por meio de eventos pelo desenvolvedor.
Comportamento esperado:
dd das linhas da coleção.
Comportamento real:
1) Tests\Unit\Services\Websites\WebsiteCredentialsImportServiceTest::testImportTabDelimited
Error: Call to a member function beginTransaction() on null
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php:109
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php:93
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php:23
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:327
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223
/var/www/vhosts/website.local/vendor/maatwebsite/excel/src/Reader.php:96
/var/www/vhosts/website.local/vendor/maatwebsite/excel/src/Excel.php:120
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223
/var/www/vhosts/website.local/app/Services/Websites/WebsiteCredentialsImportService.php:198
/var/www/vhosts/website.local/app/Services/Websites/WebsiteCredentialsImportService.php:182
/var/www/vhosts/website.local/app/Services/Websites/WebsiteCredentialsImportService.php:122
/var/www/vhosts/website.local/tests/Unit/Services/Websites/WebsiteCredentialsImportServiceTest.php:25
<?php
namespace App\Imports\Websites;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
/**
* Class WebsiteCredentialsImport
*
* <strong i="29">@package</strong> App\Imports\Websites
*/
class WebsiteCredentialsImport implements ToCollection
{
public function collection(Collection $rows)
{
dd(['COLLECTION' => $rows]);
}
}
$collection = Excel::import(
new WebsiteCredentialsImport,
$this->file_name,
null,
$this->reader_type
);
Usamos as transações do banco de dados para validação e inserções em lote. Eles são vitais para os usuários do Eloquent / Laravel-DB. Fico feliz em mesclar um PR que oferece uma opção de configuração para desativá-lo para usuários que usam.
A próxima versão terá uma configuração para desativar as transações do Laravel-DB + uma forma de adicionar manipuladores de transações personalizados
Oi !
Estou exatamente na situação: NÃO preciso salvar os dados lidos e estou usando o Mongo.
Você poderia me indicar o código que desabilita as transações?
Oi !
Estou exatamente na situação: NÃO preciso salvar os dados lidos e estou usando o Mongo.
Você poderia me indicar o código que desabilita as transações?
https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f
Seção de documentação relevante: https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Olá, estou na mesma situação: tenho que ler um arquivo excel e preciso armazená-lo no mongodb.
Eu li a correção e o erro que tenho agora é:
"Incapaz de resolver o driver NULL para [MaatwebsiteExcel \ Transactions \ TransactionManager]."
Tem ideia de como resolver isso?
Obrigado pelo ótimo pacote.
editar: eu usei a importação para a coleção e funciona, mas ainda não sei por que a importação para o modelo quebra
Porque a coleção não usa transações. Por favor, consulte meu comentário anterior, ele explica como desabilitar transações.
Porque a coleção não usa transações. Por favor, consulte meu comentário anterior, ele explica como desabilitar transações.
Oi, obrigado por sua resposta rápida.
Eu li seu comentário, é por isso que recebi o "Não foi possível resolver o driver NULL para [MaatwebsiteExcel \ Transactions \ TransactionManager]." erro.
Então mudei para a coleção
Você provavelmente está digitando algo errado em sua configuração. NULL
não parece um driver válido. 'null'
(note que é uma string) é.
Eu também tenho a mesma situação, consegui a solução em https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Mas, eu não sei como criar Custom transaction handlers
e onde usá-lo
Eu também tenho mongodb. esta https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions funciona para mim. Thx @patrickbrouwers
Talvez vocês estejam tendo o mesmo problema que eu tive no # 2384
Talvez minha solução funcione para você, tente um:
php artisan config:clear
Às vezes, especialmente ao atualizar um pacote, o Laravel não limpará o cache e seu pacote não encontrará os arquivos de configuração. Assim, o driver será sempre NULL e falhará.
Talvez vocês estejam tendo o mesmo problema que eu tive no # 2384
Talvez minha solução funcione para você, tente um:
php artisan config:clear
Às vezes, especialmente ao atualizar um pacote, o Laravel não limpará o cache e seu pacote não encontrará os arquivos de configuração. Assim, o driver será sempre NULL e falhará.
Melhor resposta
Comentários muito úteis
Talvez vocês estejam tendo o mesmo problema que eu tive no # 2384
Talvez minha solução funcione para você, tente um:
php artisan config:clear
Às vezes, especialmente ao atualizar um pacote, o Laravel não limpará o cache e seu pacote não encontrará os arquivos de configuração. Assim, o driver será sempre NULL e falhará.