Laravel-excel: [BUG] خطأ في الاستيراد: الكائن يبدأ المعاملة

تم إنشاؤها على ١٦ يناير ٢٠١٩  ·  13تعليقات  ·  مصدر: Maatwebsite/Laravel-Excel

المتطلبات الأساسية

  • [x] نظرًا لأنه قادر على إعادة إنتاج السلوك خارج التعليمات البرمجية الخاصة بك ، يتم عزل المشكلة في Laravel Excel.
  • [x] تم التحقق من عدم تقديم مشكلتك بالفعل.
  • [x] تم التحقق مما إذا لم يتم تقديم العلاقات العامة التي تعمل على حل هذه المشكلة.

إصدارات

  • إصدار PHP: 7.2
  • إصدار Laravel: 5.7.17
  • إصدار الحزمة: 3.1.3

وصف

لقد قمت بإنشاء فئة كائن الاستيراد وحدد مخاوف ToCollection. عند إجراء استيراد Excel :: ، أتلقى خطأ موضحًا في 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 بتنظيف ذاكرة التخزين المؤقت ولن تعثر الحزمة على ملفات التكوين. وبالتالي ، سيكون السائق دائمًا فارغًا ويفشل.

ال 13 كومينتر

نحن نستخدم معاملات قاعدة البيانات للتحقق من الصحة وإدراج الدُفعات. إنها حيوية جدًا لمستخدمي 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.
لقد قرأت الإصلاح والخطأ الذي لدي الآن هو:
"غير قادر على حل برنامج التشغيل NULL لـ [MaatwebsiteExcel \ Transactions \ TransactionManager]."
هل لديك أي فكرة عن كيفية حلها؟
شكرا لك على الحزمة الرائعة.

تحرير: لقد استخدمت الاستيراد للمجموعة وهو يعمل ، لكنني ما زلت لا أعرف سبب تعطل الاستيراد إلى النموذج

لأن المجموعة لا تستخدم المعاملات. يرجى الرجوع إلى تعليقي السابق ، فهو يشرح كيفية تعطيل المعاملات.

لأن المجموعة لا تستخدم المعاملات. يرجى الرجوع إلى تعليقي السابق ، فهو يشرح كيفية تعطيل المعاملات.

مرحبا ، شكرا لك على ردك السريع.
لقد قرأت تعليقك ، ولهذا تلقيت رسالة "تعذر حل برنامج التشغيل NULL لـ [MaatwebsiteExcel \ Transactions \ TransactionManager]." خطأ.
لذلك تحولت إلى المجموعة

ربما تكتب شيئًا خاطئًا في التكوين الخاص بك بعد ذلك. 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 يعمل بالنسبة لي. تضمين التغريدة

ربما أنتم يا رفاق تواجهون نفس المشكلة التي واجهتها في # 2384

ربما يعمل الحل الخاص بي من أجلك ، جرب:

php artisan config:clear

في بعض الأحيان ، خاصةً عند تحديث حزمة ، لا يقوم Laravel بتنظيف ذاكرة التخزين المؤقت ولن تعثر الحزمة على ملفات التكوين. وبالتالي ، سيكون السائق دائمًا فارغًا ويفشل.

ربما أنتم يا رفاق تواجهون نفس المشكلة التي واجهتها في # 2384

ربما يعمل الحل الخاص بي من أجلك ، جرب:

php artisan config:clear

في بعض الأحيان ، خاصةً عند تحديث حزمة ، لا يقوم Laravel بتنظيف ذاكرة التخزين المؤقت ولن تعثر الحزمة على ملفات التكوين. وبالتالي ، سيكون السائق دائمًا فارغًا ويفشل.

افضل جواب

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات