Я использую этот пакет: 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