我已经创建了导入对象类,并指定了ToCollection的关注点。 执行Excel :: import后,我收到以下Actual Behavior
中显示的错误。
不要使用事务数据库。 我们使用MongoDB。
除此之外,未指定模型导入,并且程序包不应该进行任何数据库准备,而应该由开发人员通过事件进行处理。
预期行为:
集合行的dd。
实际行为:
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
);
我们使用数据库事务进行验证和批量插入。 对于Eloquent / Laravel-DB用户而言,它们至关重要。 很高兴合并一个提供配置选项的PR,以禁止使用.eg Mongo的用户禁用它
下一版本将具有禁用Laravel-DB事务的设置以及添加自定义事务处理程序的方法
你好 !
我处于一种非常确切的情况:我不需要保存读取的数据,而我正在使用Mongo。
您能指出禁止交易的代码吗?
你好 !
我处于一种非常确切的情况:我不需要保存读取的数据,而我正在使用Mongo。
您能指出禁止交易的代码吗?
https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f
相关文档部分: https: //docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
嗨,我处于相同的情况:我必须读取一个Excel文件,并将其存储在mongodb中。
我已经阅读了此修复程序,现在遇到的错误是:
“无法解析[MaatwebsiteExcel \ Transactions \ TransactionManager]的NULL驱动程序。
您知道如何解决吗?
谢谢你的大礼包。
编辑:我使用导入到集合,并且可以工作,但我仍然不知道为什么导入toModel会中断
因为Collection不使用交易。 请参考我之前的评论,它说明了如何禁用事务。
因为Collection不使用交易。 请参考我之前的评论,它说明了如何禁用事务。
嗨,谢谢您的快速答复。
我确实读过您的评论,这就是为什么我收到“无法解析[MaatwebsiteExcel \ Transactions \ TransactionManager]的NULL驱动程序”的原因。 错误。
所以我切换到收藏
然后,您可能在配置中输入了错误的内容。 NULL
听起来不像是一个有效的驱动程序。 'null'
(请注意,它是一个字符串)是。
我也有同样的情况,我在https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions上找到了解决方案
但是,我不知道如何创建Custom transaction handlers
以及在哪里使用
我也有mongodb。 这个https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions对我有用。 谢谢@patrickbrouwers
也许你们遇到了我在#2384遇到的相同问题
也许我的解决方案对您有用,请尝试以下方法:
php artisan config:clear
有时,特别是在更新程序包时,Laravel不会清理缓存,而您的程序包也找不到配置文件。 因此,驱动程序将始终为NULL并失败。
也许你们遇到了我在#2384遇到的相同问题
也许我的解决方案对您有用,请尝试以下方法:
php artisan config:clear
有时,特别是在更新程序包时,Laravel不会清理缓存,而您的程序包也找不到配置文件。 因此,驱动程序将始终为NULL并失败。
最佳答案
最有用的评论
也许你们遇到了我在#2384遇到的相同问题
也许我的解决方案对您有用,请尝试以下方法:
php artisan config:clear
有时,特别是在更新程序包时,Laravel不会清理缓存,而您的程序包也找不到配置文件。 因此,驱动程序将始终为NULL并失败。