サーチ…


備考

データベースのシードでは、データ、一般的なテストデータをデータベースに挿入できます。デフォルトでは、 database/seeds下にDatabaseSeederクラスがありdatabase/seeds

実行中のシーダーは

php artisan db:seed

または、単一のクラスだけを処理したい場合

php artisan db:seed --class=TestSeederClass

すべての職人のコマンドと同様に、 APIのドキュメントにあるさまざまなメソッドにアクセスできます

データの挿入

データを挿入する方法はいくつかあります。

DBファサードの使用

public function run()
{
    DB::table('users')
        ->insert([
            'name' => 'Taylor',
            'age'  => 21
        ]);
}

モデルをインスタンス化する

public function run()
{
    $user = new User;
    $user->name = 'Taylor';
    $user->save();
}

createメソッドの使用

public function run()
{
    User::create([
        'name' => 'Taylor',
        'age'  => 21
    ]);
}

工場を使用して

public function run()
{
    factory(App\User::class, 10)->create();
}

古いデータのシード&削除と自動インクリメントのリセット

public function run()
{
    DB::table('users')->delete();
    DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;');
    factory(App\User::class, 200)->create();
}

データの挿入/更新の詳細については、 永続化の例を参照してください。

他のシーダーに電話する

DatabaseSeederクラス内で、他のシーダーを呼び出すことができます

$this->call(TestSeeder::class)

これにより、シーダーを簡単に見つけることができる場所に1つのファイルを保存できます。外部キーの制約に関するコールの順序に注意する必要があることに注意してください。まだ存在しないテーブルは参照できません。

シーダーの作成

シーダーを作成するには、 make:seeder Artisanコマンドを使用します。生成されたすべてのシーダーは、 database/seedsディレクトリーに配置されdatabase/seeds

$ php artisan make:seeder MoviesTableSeeder

生成されたシーダーには、1つのメソッドが含まれrun 。この方法でデータベースにデータを挿入することができます。

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class MoviesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        App\Movie::create([
            'name' => 'A New Hope',
            'year' => '1977'
        ]);

        App\Movie::create([
            'name' => 'The Empire Strikes Back',
            'year' => '1980'
        ]);
    }
}

一般的には、 DatabaseSeederクラス内のすべてのシーダーを呼び出す必要があります。

シーダーの作成が終わったら、 db:seedコマンドを使用します。これにより、 DatabaseSeederrun機能がrunます。

$ php artisan db:seed

また、特定の--classクラスを実行して、 - --classオプションを使用して個別に実行するように指定することもできます。

$ php artisan db:seed --class=UserSeeder

すべての移行をロールバックして再実行してから再시드する場合は、次のようにします。

$ php artisan migrate:refresh --seed

migrate:refresh --seedコマンドは、次の3つのコマンドのショートカットです。

$ php artisan migrate:reset     # rollback all migrations
$ php artisan migrate           # run migrations
$ php artisan db:seed           # run seeders

安全な再供給

以前に作成したシードに影響を与えずにデータベースを再シードすることができます。この目的のために、シーダーでfirstOrCreateを使用することができます:

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);

次に、データベースをシードできます。

php artisan db:seed

後で、別のタイプの従業員を追加する場合は、その新しいファイルを同じファイルに追加するだけです。

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);
EmployeeType::firstOrCreate([
    'type' => 'secretary',
]);

また、問題なくデータベースを再度シードします。

php artisan db:seed

最初の呼び出しで、レコードを取得しているのに何もしていないことに注目してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow