J'ai créé la classe d'objets d'importation et spécifié les préoccupations de ToCollection. Lors de l'exécution d'Excel :: import, je reçois une erreur affichée dans Actual Behavior
ci-dessous.
N'utilisez pas de base de données transactionnelle. Nous utilisons MongoDB.
En dehors de cela, l'importation de modèle n'a pas été spécifiée et le package ne devrait pas faire de préparation de base de données, qui devrait être gérée par des événements par le développeur.
Comportement prévisible:
jj des lignes de la collection.
Comportement réel:
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
);
Nous utilisons les transactions de base de données pour la validation et les insertions de lots. Ils sont tout à fait vitaux pour les utilisateurs d'Eloquent / Laravel-DB. Heureux de fusionner un PR qui donne une option de configuration pour le désactiver pour les utilisateurs qui utilisent .eg Mongo
La prochaine version aura un paramètre pour désactiver les transactions Laravel-DB + un moyen d'ajouter des gestionnaires de transactions personnalisés
Salut !
Je suis dans la situation très exacte: je n'ai PAS besoin d'enregistrer les données lues et j'utilise Mongo.
Pourriez-vous m'indiquer s'il vous plaît le code qui désactive les transactions?
Salut !
Je suis dans la situation très exacte: je n'ai PAS besoin d'enregistrer les données lues et j'utilise Mongo.
Pourriez-vous m'indiquer s'il vous plaît le code qui désactive les transactions?
https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f
Section de documentation pertinente: https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Salut, je suis dans la même situation: je dois lire un fichier Excel et je dois le stocker dans mongodb.
J'ai lu le correctif et l'erreur que j'ai maintenant est:
"Impossible de résoudre le pilote NULL pour [MaatwebsiteExcel \ Transactions \ TransactionManager]."
Avez-vous une idée de la façon de le résoudre?
Merci pour le super package.
edit: j'ai utilisé l'importation dans la collection et cela fonctionne, mais je ne sais toujours pas pourquoi l'importation dans le modèle est interrompue
Parce que Collection n'utilise pas de transactions. Veuillez vous référer à mon commentaire précédent, il explique comment désactiver les transactions.
Parce que Collection n'utilise pas de transactions. Veuillez vous référer à mon commentaire précédent, il explique comment désactiver les transactions.
Bonjour, merci pour votre réponse rapide.
J'ai lu votre commentaire, c'est pourquoi j'ai reçu le message "Impossible de résoudre le pilote NULL pour [MaatwebsiteExcel \ Transactions \ TransactionManager]." Erreur.
Alors je suis passé à la collection
Vous êtes probablement en train de taper quelque chose de mal dans votre configuration. NULL
ne sonne pas comme un pilote valide. 'null'
(notez qu'il s'agit d'une chaîne) est.
J'ai aussi la même situation, j'ai eu la solution sur https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Mais, je ne sais pas comment créer Custom transaction handlers
et où l'utiliser
J'ai aussi mongodb. ce https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions fonctionne pour moi. Merci @patrickbrouwers
Peut-être que vous rencontrez le même problème que moi au # 2384
Peut-être que ma solution fonctionnerait pour vous, essayez un:
php artisan config:clear
Parfois, spécialement lors de la mise à jour d'un paquet, Laravel ne nettoiera pas le cache et votre paquet ne trouvera pas les fichiers de configuration. Ainsi, le pilote sera toujours NULL et échouera.
Peut-être que vous rencontrez le même problème que moi au # 2384
Peut-être que ma solution fonctionnerait pour vous, essayez un:
php artisan config:clear
Parfois, spécialement lors de la mise à jour d'un paquet, Laravel ne nettoiera pas le cache et votre paquet ne trouvera pas les fichiers de configuration. Ainsi, le pilote sera toujours NULL et échouera.
Meilleure réponse
Commentaire le plus utile
Peut-être que vous rencontrez le même problème que moi au # 2384
Peut-être que ma solution fonctionnerait pour vous, essayez un:
php artisan config:clear
Parfois, spécialement lors de la mise à jour d'un paquet, Laravel ne nettoiera pas le cache et votre paquet ne trouvera pas les fichiers de configuration. Ainsi, le pilote sera toujours NULL et échouera.