Ich habe die Importobjektklasse erstellt und die Bedenken von ToCollection angegeben. Beim Ausführen von Excel :: import erhalte ich eine Fehlermeldung, die in Actual Behavior
unten angezeigt wird.
Verwenden Sie keine Transaktionsdatenbank. Wir verwenden MongoDB.
Abgesehen davon wurde der Modellimport nicht angegeben und das Paket sollte keine Datenbankvorbereitung durchführen, die durch Ereignisse vom Entwickler behandelt werden sollte.
Erwartetes Verhalten:
dd der Sammlungszeilen.
Tatsächliches Verhalten:
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
);
Wir verwenden die Datenbanktransaktionen zur Validierung und für Batch-Einfügungen. Sie sind für die Benutzer von Eloquent / Laravel-DB sehr wichtig. Gerne führen wir einen PR zusammen, der eine Konfigurationsoption zum Deaktivieren für Benutzer bietet, die .eg Mongo verwenden
Die nächste Version enthält eine Einstellung zum Deaktivieren von Laravel-DB-Transaktionen sowie eine Möglichkeit zum Hinzufügen benutzerdefinierter Transaktionshandler
Hallo !
Ich bin in der sehr genauen Situation: Ich muss die gelesenen Daten NICHT speichern und verwende Mongo.
Könnten Sie mich bitte auf den Code verweisen, der Transaktionen deaktiviert?
Hallo !
Ich bin in der sehr genauen Situation: Ich muss die gelesenen Daten NICHT speichern und verwende Mongo.
Könnten Sie mich bitte auf den Code verweisen, der Transaktionen deaktiviert?
https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f
Relevanter Dokumentationsabschnitt: https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Hallo, ich bin in der gleichen Situation: Ich muss eine Excel-Datei lesen und sie in Mongodb speichern.
Ich habe das Update gelesen und der Fehler, den ich jetzt habe, ist:
"NULL-Treiber für [MaatwebsiteExcel \ Transactions \ TransactionManager] kann nicht aufgelöst werden."
Haben Sie eine Idee, wie Sie es lösen können?
Vielen Dank für das tolle Paket.
Bearbeiten: Ich habe den Import zum Sammeln verwendet und es funktioniert, aber ich weiß immer noch nicht, warum der Import in das Modell unterbrochen wird
Weil Collection keine Transaktionen verwendet. Bitte beziehen Sie sich auf meinen vorherigen Kommentar, in dem erklärt wird, wie Transaktionen deaktiviert werden.
Weil Collection keine Transaktionen verwendet. Bitte beziehen Sie sich auf meinen vorherigen Kommentar, in dem erklärt wird, wie Transaktionen deaktiviert werden.
Hallo, danke für deine schnelle Antwort.
Ich habe Ihren Kommentar gelesen, deshalb habe ich den "NULL-Treiber für [MaatwebsiteExcel \ Transactions \ TransactionManager] kann nicht aufgelöst werden" erhalten. Error.
Also bin ich zur Sammlung gewechselt
Dann geben Sie wahrscheinlich etwas Falsches in Ihre Konfiguration ein. NULL
klingt nicht nach einem gültigen Treiber. 'null'
(beachten Sie, dass es sich um eine Zeichenfolge handelt) ist.
Ich habe auch die gleiche Situation, ich habe die Lösung auf https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions erhalten
Aber ich weiß nicht, wie ich Custom transaction handlers
erstellen und wo ich es verwenden soll
Ich habe auch Mongodb. Diese https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions funktioniert für mich. Danke @patrickbrouwers
Vielleicht habt ihr das gleiche Problem wie bei # 2384
Vielleicht würde meine Lösung für Sie funktionieren, versuchen Sie Folgendes:
php artisan config:clear
Manchmal, insbesondere beim Aktualisieren eines Pakets, bereinigt Laravel den Cache nicht und Ihr Paket findet die Konfigurationsdateien nicht. Somit ist der Treiber immer NULL und schlägt fehl.
Vielleicht habt ihr das gleiche Problem wie bei # 2384
Vielleicht würde meine Lösung für Sie funktionieren, versuchen Sie Folgendes:
php artisan config:clear
Manchmal, insbesondere beim Aktualisieren eines Pakets, bereinigt Laravel den Cache nicht und Ihr Paket findet die Konfigurationsdateien nicht. Somit ist der Treiber immer NULL und schlägt fehl.
Beste Antwort
Hilfreichster Kommentar
Vielleicht habt ihr das gleiche Problem wie bei # 2384
Vielleicht würde meine Lösung für Sie funktionieren, versuchen Sie Folgendes:
php artisan config:clear
Manchmal, insbesondere beim Aktualisieren eines Pakets, bereinigt Laravel den Cache nicht und Ihr Paket findet die Konfigurationsdateien nicht. Somit ist der Treiber immer NULL und schlägt fehl.