Мне нужно использовать необработанные данные sql в качестве сеялки

#php #regex #laravel #laravel-seeding

#php #регулярное выражение #laravel #laravel-заполнение

Вопрос:

У меня есть эти данные SQL, и я хочу использовать их в качестве сеялки. Теперь мой руководитель группы сказал «Это дамп«, дополнительно он сказал, что я могу использовать эти данные sql в качестве СЕЯЛКИ, но сначала мне нужно кое-что сделать, прежде чем я смогу использовать в качестве сеялки.

Может кто-нибудь здесь знает, что именно я должен сделать в первую очередь?

введите описание изображения здесь

Комментарии:

1. сначала вам нужно создать базу данных и таблицы, в которые вы хотите вставить свое начальное значение

2. Сделав это, я фактически создал файлы миграции для этого. Спасибо

3. ваш сеял работает сейчас?

4. нет, пока нет, я пробовал этот код $ sql = file_get_contents(database_path() . ‘/seeds/country.sql’); DB::statement ($ sql); все равно это выдает мне ошибку. Спасибо

Ответ №1:

  • Без Laravel: В зависимости от того, какой клиент MYSQL вы используете (phpMyAdmin, Workbench и т.д.), Если у вас уже есть таблица, созданная в базе данных, вы можете просто импортировать файл на клиент, а клиент сделает все остальное за вас. Найдите, как импортировать файл дампа для вашего конкретного клиента MySQL.

  • С Laravel: то, что я делаю, это

    • Я копирую сам запрос (ту часть, которая начинается с INSERT INTO) в другой файл в папке хранения (скажем, в storage/app/country.sql )
    • В классе seeder теперь я получаю содержимое файла, который я вставляю с DB::insert
 // database/seeds/CountrySeeder.php
class CountrySeeder extends Seeder
{
    public function run ()
    {
        $sql = file_get_contents(storage_path('app').'/country.sql');
        DB::insert($sql);
    }
}
  

Убедитесь, что класс вызывается в DatabaseSeeder классе

 // database/seeds/DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
    public function run ()
    {
        $this->call([
            // ... 
            CountrySeeder::class,
            // ... other seeders
        ]);
    }
}
  

Комментарии:

1. 1 C:xampphtdocsgeoloctaskgeotaskvendorlaravelframeworksrcIlluminateDatabaseConnection.php:458 Исключение PDOException::(«SQLSTATE[42S02]: базовая таблица или представление не найдено: таблица 1146 ‘geoloc.country’ не существует») 2 C:xampphtdocsgeoloctaskgeotaskvendorlaravelframeworksrcIlluminateDatabaseConnection.php:458 PDO::prepare («Все еще эта ошибка, спасибо в любом случае 🙂

2. Таблица country table не существует в базе данных! Убедитесь, что вы создали их вручную (через свой клиент MySQL) или создали для них файл миграции.

3. Вы импортируете файл непосредственно в базу данных или вы загружаете из Laravel?