サーチ…
備考
データベースのシードでは、データ、一般的なテストデータをデータベースに挿入できます。デフォルトでは、 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
コマンドを使用します。これにより、 DatabaseSeeder
のrun
機能が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
最初の呼び出しで、レコードを取得しているのに何もしていないことに注目してください。