ここでは,シーダを用いてデータベースにテスト用データを投入します.まず,次のコマンドでシーダファイルを生成します.
vagrant@ubuntu2204 comment_app $ php artisan make:seeder CommentsTableSeeder ⏎
INFO Seeder [database/seeders/CommentsTableSeeder.php] created successfully.
vagrant@ubuntu2204 comment_app $
上のコマンドによって database/seed/ ディレクトリに CommentsTableSeeder.php ファイルが生成されました.ここの手順と同様に,リモート (ubuntu) のファイルをローカルに同期してください.その後,このファイルにテスト用データを記載するとともに,database/seeds/DatabaseSeeder.php には CommentsTableSeeder.php を実行するためのコードを記載します.なお,特に Windows の秀丸エディタなどのエディタを使っている時には,保存するときの文字コードが Unicode (UTF-8) になっているかを確認しよう.秀丸エディタでは特に指定しなければ Shift-JIS で保存されるため,実行時にブラウザで文字化けが発生することになります.Visual Studio Code ではデフォルトで UTF-8 になっている(Visual Studio Code の右下のステータスバーに表示されている)です.
database/seeders/CommentsTableSeeder.php
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class CommentsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// 一旦中身を削除する
DB::table('comments')->delete();
DB::table('comments')->insert([
'title' => '最初のコメント',
'body' => '最初のコメントです!'
]);
DB::table('comments')->insert([
'title' => '2つ目',
'body' => '2つ目のコメントです!'
]);
DB::table('comments')->insert([
'title' => '<三個目>のコメント',
'body' => 'シーダによってテストデータを設定します.'
]);
}
}
database/seeders/DatabaseSeeder.php
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// \App\Models\User::factory(10)->create();
// \App\Models\User::factory()->create([
// 'name' => 'Test User',
// 'email' => 'test@example.com',
// ]);
$this->call(CommentsTableSeeder::class);
}
}
テストデータをデータベースに投入するには次のように php artisan db:seed
コマンドを実行します.状況に応じて,マイグレーションの状態を確認してから実行しても良いでしょう.
vagrant@ubuntu2204 comment_app $ php artisan migrate:status ⏎ Migration name ........................................ Batch / Status 2014_10_12_000000_create_users_table ......................... [1] Ran 2014_10_12_100000_create_password_reset_tokens_table ......... [1] Ran 2019_08_19_000000_create_failed_jobs_table ................... [1] Ran 2019_12_14_000001_create_personal_access_tokens_table ........ [1] Ran 2023_10_15_115031_create_comments_table ...................... [1] Ran vagrant@ubuntu2204 comment_app $ php artisan db:seed ⏎ INFO Seeding database. Database\Seeders\CommentsTableSeeder ......................... RUNNING Database\Seeders\CommentsTableSeeder ................... 31.38 ms DONE vagrant@ubuntu2204 comment_app $