在迁移完成后,我是否可以在迁移中放置一些东西来自动为表添加测试数据的种子?“你……你……你……你……你……你……你……你……你……”
sqxo8psd1#
您可以使用--seed选项调用migrate:refresh,以便在迁移完成后自动设置种子:
--seed
migrate:refresh
php artisan migrate:refresh --seed
这将回滚并重新运行所有迁移,然后运行所有种子。作为一个额外的功能,您还可以始终使用Artisan::call()从应用程序内部运行artisan命令:
Artisan::call()
Artisan::call('db:seed');
或
Artisan::call('db:seed', array('--class' => 'YourSeederClass'));
如果您需要特定seeder类。
gcmastyq2#
lukasgeiter's answer对于测试数据是正确的,但是按照artisan命令运行
将刷新数据库,删除从前端输入或更新的任何数据。如果您想在迁移过程中为数据库设置种子(例如,对保留现有数据的应用程序进行更新),例如添加新的表countries和种子数据,您可以执行以下操作:在database/seeds中创建一个数据库seeder示例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'); } }
如果YourTableSeeder类出现php class not found错误,请运行composer dump-autoload。
composer dump-autoload
fafcakar3#
虽然lukasgeiter's answer是正确的,但我想详细说明你的第二个问题。还是要分开播种?是的。既然你在谈论 * 测试数据 *,你就应该避免把 * 播种 * 和 * 迁移 * 结合起来。当然,如果这不是测试数据,而是应用程序数据,您可以始终将插入数据作为迁移的一部分。顺便说一句,如果你想在测试中播种你的数据,你可以在Laravel测试用例中调用$this->seed()。
$this->seed()
bwleehnv4#
Laravel Framework的运行迁移和种子特定文件的提示迁移
php artisan migrate --path=/database/migrations/fileName.php
罗尔贝克
php artisan migrate:rollback --path=/database/migrations/fileName.php
刷新
php artisan migrate:refresh --path=/database/migrations/fileName.php
播种机
php artisan db:seed --class=classNameTableSeeder
谢谢
4条答案
按热度按时间sqxo8psd1#
您可以使用
--seed
选项调用migrate:refresh
,以便在迁移完成后自动设置种子:这将回滚并重新运行所有迁移,然后运行所有种子。
作为一个额外的功能,您还可以始终使用
Artisan::call()
从应用程序内部运行artisan命令:或
如果您需要特定seeder类。
gcmastyq2#
如果不想删除已有数据,想在迁移后种子化
lukasgeiter's answer对于测试数据是正确的,但是按照artisan命令运行
将刷新数据库,删除从前端输入或更新的任何数据。
如果您想在迁移过程中为数据库设置种子(例如,对保留现有数据的应用程序进行更新),例如添加新的表countries和种子数据,您可以执行以下操作:
在database/seeds中创建一个数据库seeder示例YourSeeder.php并迁移位置表
如果YourTableSeeder类出现php class not found错误,请运行
composer dump-autoload
。fafcakar3#
虽然lukasgeiter's answer是正确的,但我想详细说明你的第二个问题。
还是要分开播种?
是的。既然你在谈论 * 测试数据 *,你就应该避免把 * 播种 * 和 * 迁移 * 结合起来。当然,如果这不是测试数据,而是应用程序数据,您可以始终将插入数据作为迁移的一部分。
顺便说一句,如果你想在测试中播种你的数据,你可以在Laravel测试用例中调用
$this->seed()
。bwleehnv4#
Laravel Framework的运行迁移和种子特定文件的提示
迁移
罗尔贝克
刷新
播种机
谢谢