Creé la clase de objeto de importación y especifiqué las preocupaciones de ToCollection. Al realizar Excel :: import, recibo un error que se muestra en Actual Behavior
continuación.
No utilice una base de datos transaccional. Usamos MongoDB.
Aparte de eso, no se especificó la importación de modelos y el paquete no debería realizar ninguna preparación de la base de datos, que debería ser manejada a través de eventos por parte del desarrollador.
Comportamiento esperado:
dd de las filas de la colección.
Comportamiento 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 las transacciones de la base de datos para la validación y las inserciones de lotes. Son bastante vitales para los usuarios de Eloquent / Laravel-DB. Feliz de fusionar un PR que ofrece una opción de configuración para deshabilitarlo para los usuarios que usan .eg Mongo
La próxima versión tendrá una configuración para deshabilitar las transacciones Laravel-DB + una forma de agregar controladores de transacciones personalizados
Hola !
Estoy en una situación muy exacta: NO necesito guardar los datos leídos y estoy usando Mongo.
¿Podría indicarme el código que deshabilita las transacciones?
Hola !
Estoy en una situación muy exacta: NO necesito guardar los datos leídos y estoy usando Mongo.
¿Podría indicarme el código que deshabilita las transacciones?
https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f
Sección de documentación relevante: https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Hola, estoy en la misma situación: tengo que leer un archivo de Excel y necesito almacenarlo en mongodb.
He leído la solución y el error que tengo ahora es:
"No se puede resolver el controlador NULL para [MaatwebsiteExcel \ Transactions \ TransactionManager]".
¿Tienes idea de cómo solucionarlo?
Gracias por el gran paquete.
editar: utilicé la importación a la colección y funciona, pero todavía no sé por qué se rompe la importación al modelo
Porque Collection no usa transacciones. Consulte mi comentario anterior, explica cómo deshabilitar las transacciones.
Porque Collection no usa transacciones. Consulte mi comentario anterior, explica cómo deshabilitar las transacciones.
Hola, gracias por tu rápida respuesta.
Leí su comentario, por eso recibí el mensaje "No se puede resolver el controlador NULL para [MaatwebsiteExcel \ Transactions \ TransactionManager]". error.
Así que cambié a colección
Probablemente esté escribiendo algo mal en su configuración entonces. NULL
no suena como un controlador válido. 'null'
(tenga en cuenta que es una cadena) es.
También tengo la misma situación, obtuve la solución en https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Pero, no sé cómo crear Custom transaction handlers
y dónde usarlo
Yo también tengo mongodb. esto https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions funciona para mí. Gracias @patrickbrouwers
Tal vez ustedes estén teniendo el mismo problema que yo en el # 2384.
Tal vez mi solución funcione para usted, pruebe con:
php artisan config:clear
A veces, especialmente al actualizar un paquete, Laravel no limpiará el caché y su paquete no encontrará los archivos de configuración. Por lo tanto, el controlador siempre será NULL y fallará.
Tal vez ustedes estén teniendo el mismo problema que yo en el # 2384.
Tal vez mi solución funcione para usted, pruebe con:
php artisan config:clear
A veces, especialmente al actualizar un paquete, Laravel no limpiará el caché y su paquete no encontrará los archivos de configuración. Por lo tanto, el controlador siempre será NULL y fallará.
La mejor respuesta
Comentario más útil
Tal vez ustedes estén teniendo el mismo problema que yo en el # 2384.
Tal vez mi solución funcione para usted, pruebe con:
php artisan config:clear
A veces, especialmente al actualizar un paquete, Laravel no limpiará el caché y su paquete no encontrará los archivos de configuración. Por lo tanto, el controlador siempre será NULL y fallará.