Почему экспорт из Excel в Csv приводит к сбою Laravel Seeder при использовании пакета Flynsarmy csv seeder? - PullRequest
0 голосов
/ 19 декабря 2018

Я использую этот пакет: https://github.com/Flynsarmy/laravel-csv-seeder

Сеялка Flynsarmy Csv работает нормально, если я вручную создаю файл и сохраняю его как csv, а затем заполняю базу данных.Artisan отвечает

"Seeding: ProductsTableSeeder
Database seeding completed successfully."

Однако, если я сохраняю файл Excel в формате csv, я получаю ответ:

"Seeding: ProductsTableSeeder"

Это не дает сбоя.Никаких исключений не выбрасывается.Но также нет сообщения об успехе .

Когда я проверяю БД, таблицы пусты.

Вот мой метод миграции "вверх"

 {
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('sku')->nullable();
        $table->string('name');
        $table->string('species')->nullable();
        $table->string('fabric')->nullable();
        $table->string('panel')->nullable();
        $table->string('gauge_gasket')->nullable();
        $table->string('type')->nullable();
        $table->string('brand')->nullable();
        $table->string('brand_label')->nullable();
        $table->boolean('is_cjb');
        $table->boolean('is_osp');
        $table->boolean('is_starmark');
        $table->boolean('is_vision');
        $table->boolean('gasketed');;
        $table->string('color');
        $table->float('inside_width')->nullable();
        $table->float('inside_length')->nullable();
        $table->float('outside_width')->nullable();
        $table->float('outside_length')->nullable();
        $table->timestamps();
    });

Вот моя реализация Flynsarmy Csv Seeder:

use Flynsarmy\CsvSeeder\CsvSeeder;

    class ProductsTableSeeder extends CsvSeeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
              public function __construct()
          {
            $this->table = 'products';
            $this->filename = base_path().'/database/seeds/csvs/product_info.csv';
          }

          public function run()
          {
            // Recommended when importing larger CSVs
            DB::disableQueryLog();

            // Uncomment the below to wipe the table clean before populating
            DB::table($this->table)->truncate();

            parent::run();


          }
    }

Теперь я подозреваю, что моя проблема - файл CSV.Я использовал csvlint.io и там написано

*

Структурная проблема: предполагаемый заголовок Так как нет машиночитаемого способа узнать, есть ли у вашего CSV строка заголовка, мы предположили, чтоу вашего CSV есть один.

*

Однако он выдает то же самое сообщение для csv, который я создал вручную, и, кажется, работает отлично.

Я думалэто может быть проблема с разрешениями, поэтому я выполнил команду ls -lr в своем каталоге / database / seed / csvs и получил

-rw-rw-r-- 1 secretname secretname 18315 Dec 19 14:07 product_info.csv

Я даже сделал то, что друзья не позволяют друзьям делать (chmod 777), но это ничего не исправило, так что это не проблема с разрешениями.

Я неоднократно делал:

php artisan cache:clear
composer dumpautoload
php artisan migrate:fresh --seed

Все, что я хочу сделать, это экспортировать из Excel в CSV изаполнить базу данных.Почему это такая проблема?

Вот пример моего CSV-файла.Я пробовал как со столбцом идентификатора, так и без него (поскольку laravel добавляет идентификатор и автоинкременты)

    sku,name,species,fabric,panel,finish,color,type,inside_width,inside_length,outside_width,outside_length,
800124,air tray casket,,,,white,,,30.5,,,,
555555,alex,metal,blue crepe,,paint,light blue,metal caskets,24.5,76.75,28.5,83,
578645,alex,metal,rosetan crepe,,paint,copper,metal caskets,24.5,76.75,28.5,83,
524785,alex,metal,oyster crepe,,paint,silver,metal caskets,24.5,76.75,28.5,83,
483959,alex,metal,oyster crepe,,paint,white,metal caskets,24.5,76.75,28.5,83,

Приведенный ими в качестве образца flynsarmy csv был тем, который работал успешно, просто

id,name
1,Foo
2,Bar

1 Ответ

0 голосов
/ 20 декабря 2018

Я чувствую себя так глупо.Или умный, в зависимости от того, как я на это смотрю.Я искал сложные ответы, просматривая гигантский CSV.Таким образом, я связал это с несколькими пунктами за один раз. Это - кома.Excel помещал комы там, где они не должны быть (в конце каждой строки).Удаление комы с конца каждой строки решает проблему.Интересно, что я не получил сообщение «База данных успешно заполнена».Он только сказал "Seeding: ProductsTableSeeder", но на этот раз он заполнил таблицы.Ну, привет, мир!Как это для первого поста?;)

Но знаете что?Этот линтер подтвердил мой CSV и сказал, что все было хорошо.Ну, это было неправильно!

...