Laravel-excel: [バグ]インポートエラー:オブジェクトbeginTransaction

作成日 2019年01月16日  ·  13コメント  ·  ソース: Maatwebsite/Laravel-Excel

前提条件

  • [x]コードの外部で動作を再現できるため、問題はLaravelExcelに限定されます。
  • [x]問題がまだ提出されていないことを確認しました。
  • [x]この問題を修正するPRが提出されていないかどうかを確認しました。

バージョン

  • PHPバージョン:7.2
  • Laravelバージョン:5.7.17
  • パッケージバージョン:3.1.3

説明

インポートオブジェクトクラスを作成し、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
        );
enhancement help wanted

最も参考になるコメント

多分あなたたちは私が#2384でしたのと同じ問題を抱えています

たぶん私の解決策はあなたのために働くでしょう、試してみてください:

php artisan config:clear

時々、特にパッケージを更新するとき、Laravelはキャッシュをクリーンアップせず、パッケージは設定ファイルを見つけられません。 したがって、ドライバは常にNULLになり、失敗します。

全てのコメント13件

検証とバッチ挿入にはデータベーストランザクションを使用します。 これらはEloquent / Laravel-DBユーザーにとって非常に重要です。 .egMongoを使用するユーザーに対して無効にする設定オプションを提供するPRをマージしてください

次のバージョンには、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ドライバーを解決できません。」
あなたはそれを解決する方法を知っていますか?
素晴らしいパッケージをありがとう。

編集:コレクションへのインポートを使用しましたが、機能しますが、Modelへのインポートが機能しない理由がわかりません。

コレクションはトランザクションを使用しないためです。 以前のコメントを参照してください。トランザクションを無効にする方法が説明されています。

コレクションはトランザクションを使用しないためです。 以前のコメントを参照してください。トランザクションを無効にする方法が説明されています。

こんにちは、迅速な返信ありがとうございます。
私はあなたのコメントを読みました、それで私は「[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は私のために働きます。 Thx @patrickbrouwers

多分あなたたちは私が#2384でしたのと同じ問題を抱えています

たぶん私の解決策はあなたのために働くでしょう、試してみてください:

php artisan config:clear

時々、特にパッケージを更新するとき、Laravelはキャッシュをクリーンアップせず、パッケージは設定ファイルを見つけられません。 したがって、ドライバは常にNULLになり、失敗します。

多分あなたたちは私が#2384でしたのと同じ問題を抱えています

たぶん私の解決策はあなたのために働くでしょう、試してみてください:

php artisan config:clear

時々、特にパッケージを更新するとき、Laravelはキャッシュをクリーンアップせず、パッケージは設定ファイルを見つけられません。 したがって、ドライバは常にNULLになり、失敗します。

ベストアンサー

このページは役に立ちましたか?
0 / 5 - 0 評価