Есть ли что-то, что я могу добавить в свои миграции, чтобы автоматически заполнить таблицу тестовыми данными после завершения миграции?
Или вам нужно раздавать отдельно?
Есть ли что-то, что я могу добавить в свои миграции, чтобы автоматически заполнить таблицу тестовыми данными после завершения миграции?
Или вам нужно раздавать отдельно?
Вы можете вызвать migrate:refresh с параметром --seed для автоматического заполнения после завершения миграции:
php artisan migrate:refresh --seed
Это приведет к откату и повторному запуску всех ваших миграций и последующему запуску всех сидов.
В качестве небольшого дополнения вы также можете всегда использовать Artisan::call() для запуска команды artisan из приложения:
Artisan::call('db:seed');
or
Artisan::call('db:seed', array('--class' => 'YourSeederClass'));
если вам нужен конкретный класс сеялки.
ответ lukasgeiter верен для тестовых данных, но выполняется следующая команда artisan
php artisan migrate:refresh --seed
in production обновит вашу базу данных, удалив все данные, введенные или обновленные из внешнего интерфейса.
Если вы хотите заполнить свою базу данных во время миграции (например, развертывание обновления для вашего приложения с сохранением существующих данных), например, добавить новую таблицу стран вместе с исходными данными, вы можете сделать следующее:
Создайте пример сеялки базы данных YourSeeder.php в базе данных/семянах и миграцию таблицы местоположений.
class YourTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tablename', function (Blueprint $table) {
$table->increments('id');
$table->string('name',1000);
$table->timestamps();
$table->softDeletes();
});
$seeder = new YourTableSeeder();
$seeder->run();
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tablename');
}
}
Запустите composer dump-autoload, если есть ошибка php class not found для класса YourTableSeeder.
Хотя ответ Лукасгейтера верен, я хотел бы уточнить ваш второй вопрос.
Или нужно сеять отдельно?
Да. Поскольку вы говорите о тестовых данных, вам следует избегать объединения заполнения с миграцией. Конечно, если бы это были не тестовые данные, а данные приложения, вы всегда могли бы сделать вставку данных частью миграции.
Кроме того, если вы хотите заполнить данные в рамках тестирования, вы можете вызвать $this->seed() из своего тестового примера Laravel.