#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
- Я копирую сам запрос (ту часть, которая начинается с INSERT INTO) в другой файл в папке хранения (скажем, в
// 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?