移行が完了すると、テーブルにテストデータを自動的にシードするために、移行に追加できるものはありますか?
または、あなたは持っている別々にシードするのですか?
_migrate:refresh
_オプションを指定して_--seed
_を呼び出すと、移行の完了後に自動的にシードできます。
_php artisan migrate:refresh --seed
_
これにより、すべての移行がロールバックおよび再実行され、その後すべてのシーダーが実行されます。
少し余分なだけですが、Artisan::call()
を使用して、アプリケーション内からアーティザンコマンドを実行することもできます。
_Artisan::call('db:seed');
_
または
_Artisan::call('db:seed', array('--class' => 'YourSeederClass'));
_
特定のシーダークラスが必要な場合。
lukasgeiter's answer は正しいですが、2つ目の質問について詳しく説明します。
または、別々にシードする必要がありますか?
はい。 テストデータについて話しているので、シードとの結合を避けるべきですmigration。もちろん、これがテストデータではなくアプリケーションデータである場合は、常にデータの挿入を移行の一部にすることができます。
余談ですが、データを testing の一部としてシードする場合は、Laravelテストケース内から$this->seed()
を呼び出すことができます。
lukasgeiter's answer はテストデータに対しては正しいですが、artisanコマンドに従って実行しています
php artisan migrate:refresh --seed
本番環境では、フロントエンドから入力または更新されたデータを削除してデータベースを更新します。
移行に沿ってデータベースをシードする場合(既存のデータを保持したままアプリケーションの更新をロールアウトする例)、たとえばシードデータとともに新しいテーブル国を追加する場合は、次のようにできます。
データベースシーダーの例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');
}
}