لقد قمت بإنشاء فئة كائن الاستيراد وحدد مخاوف 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
);
نحن نستخدم معاملات قاعدة البيانات للتحقق من الصحة وإدراج الدُفعات. إنها حيوية جدًا لمستخدمي 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 بتنظيف ذاكرة التخزين المؤقت ولن تعثر الحزمة على ملفات التكوين. وبالتالي ، سيكون السائق دائمًا فارغًا ويفشل.
افضل جواب
التعليق الأكثر فائدة
ربما أنتم يا رفاق تواجهون نفس المشكلة التي واجهتها في # 2384
ربما يعمل الحل الخاص بي من أجلك ، جرب:
php artisan config:clear
في بعض الأحيان ، خاصةً عند تحديث حزمة ، لا يقوم Laravel بتنظيف ذاكرة التخزين المؤقت ولن تعثر الحزمة على ملفات التكوين. وبالتالي ، سيكون السائق دائمًا فارغًا ويفشل.