Laravel-excel: [BUG] Impor kesalahan: objek beginTransaction

Dibuat pada 16 Jan 2019  ·  13Komentar  ·  Sumber: Maatwebsite/Laravel-Excel

Prasyarat

  • [x] Mampu mereproduksi perilaku di luar kode Anda, masalahnya diisolasi ke Laravel Excel.
  • [x] Memeriksa bahwa masalah Anda belum diajukan.
  • [x] Memeriksa apakah tidak ada PR yang dikirimkan yang memperbaiki masalah ini.

Versi

  • Versi PHP: 7.2.2
  • Versi Laravel: 5.7.17
  • Versi paket: 3.1.3

Deskripsi

Saya telah membuat kelas objek impor dan menentukan Masalah ToCollection. Setelah menjalankan Excel :: import, saya menerima pesan kesalahan dalam Actual Behavior bawah ini.

Langkah-langkah untuk Mereproduksi

Jangan gunakan database transaksional. Kami menggunakan MongoDB.

Selain itu, pengimporan Model tidak ditentukan dan paket tidak boleh melakukan persiapan database apa pun, yang harus ditangani melalui acara oleh pengembang.

Perilaku yang diharapkan:

hh dari baris koleksi.

Perilaku sebenarnya:

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

informasi tambahan

<?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

Komentar yang paling membantu

Mungkin kalian mengalami masalah yang sama dengan yang saya alami di # 2384

Mungkin solusi saya akan berhasil untuk Anda, coba:

php artisan config:clear

Terkadang, khususnya saat memperbarui paket, Laravel tidak akan membersihkan cache dan paket Anda tidak akan menemukan file konfigurasi. Dengan demikian, driver akan selalu NULL dan gagal.

Semua 13 komentar

Kami menggunakan transaksi database untuk validasi dan penyisipan batch. Mereka sangat penting bagi pengguna Eloquent / Laravel-DB. Senang menggabungkan PR yang memberikan opsi konfigurasi untuk menonaktifkannya bagi pengguna yang menggunakan .eg Mongo

Versi berikutnya akan memiliki pengaturan untuk menonaktifkan transaksi Laravel-DB + cara untuk menambahkan penangan transaksi khusus

Hai!

Saya berada dalam situasi yang sangat tepat: Saya TIDAK perlu menyimpan data yang telah dibaca, dan saya menggunakan Mongo.

Bisakah Anda menunjukkan kepada saya kode yang menonaktifkan transaksi?

Hai!

Saya berada dalam situasi yang sangat tepat: Saya TIDAK perlu menyimpan data yang telah dibaca, dan saya menggunakan Mongo.

Bisakah Anda menunjukkan kepada saya kode yang menonaktifkan transaksi?

https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f

Bagian dokumentasi yang relevan: https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions

Hai, saya berada dalam situasi yang sama: Saya harus membaca file excel dan saya harus menyimpannya di mongodb.
Saya telah membaca perbaikan dan kesalahan yang saya miliki sekarang adalah:
"Tidak dapat menyelesaikan driver NULL untuk [MaatwebsiteExcel \ Transactions \ TransactionManager]."
Apakah Anda tahu bagaimana mengatasinya?
Terima kasih untuk paketnya yang luar biasa.

edit: Saya menggunakan impor ke koleksi dan berhasil, tetapi saya masih tidak tahu mengapa impor ke Model rusak

Karena Collection tidak menggunakan transaksi. Silakan lihat komentar saya sebelumnya, ini menjelaskan cara menonaktifkan transaksi.

Karena Collection tidak menggunakan transaksi. Silakan lihat komentar saya sebelumnya, ini menjelaskan cara menonaktifkan transaksi.

Hai, terima kasih atas balasan cepat Anda.
Saya membaca komentar Anda, itulah mengapa saya menerima "Tidak dapat menyelesaikan driver NULL untuk [MaatwebsiteExcel \ Transactions \ TransactionManager]." kesalahan.
Jadi saya beralih ke koleksi

Anda mungkin mengetik sesuatu yang salah dalam konfigurasi Anda. NULL tidak terdengar seperti driver yang valid. 'null' (perhatikan bahwa itu adalah string) adalah.

Saya juga memiliki situasi yang sama, saya mendapat solusi di https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions
Tapi, saya tidak tahu cara membuat Custom transaction handlers dan di mana menggunakannya

Saya punya mongodb juga. https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions ini bekerja untuk saya. Thx @patrickbrouwers

Mungkin kalian mengalami masalah yang sama dengan yang saya alami di # 2384

Mungkin solusi saya akan berhasil untuk Anda, coba:

php artisan config:clear

Terkadang, khususnya saat memperbarui paket, Laravel tidak akan membersihkan cache dan paket Anda tidak akan menemukan file konfigurasi. Dengan demikian, driver akan selalu NULL dan gagal.

Mungkin kalian mengalami masalah yang sama dengan yang saya alami di # 2384

Mungkin solusi saya akan berhasil untuk Anda, coba:

php artisan config:clear

Terkadang, khususnya saat memperbarui paket, Laravel tidak akan membersihkan cache dan paket Anda tidak akan menemukan file konfigurasi. Dengan demikian, driver akan selalu NULL dan gagal.

Jawaban Terbaik

Apakah halaman ini membantu?
0 / 5 - 0 peringkat