[ はじめて の Laravel ] リンク一覧ページ を 作る No.2
前回は リンク一覧を 表示させるための インデックスページ ( 白紙ページ ) を作成したので
今回は DBを作成して テストデータを 入れていきたいと思います
まずは モデルを作って テーブルを作って テストデータを作って マイグレーションするという 順に進めます
モデルの作成
モデルは コマンドから 雛形を作ります
example-app に 移動してから
php artisan make:model Link
を 叩きます
今回は モデルの 書き換えは ないです
テーブルの作成
テーブルも コマンドから 雛形を作ります
php artisan make:migration create_links_table --create=links
を 叩くと database / migrations / {{datetime}}_create_links_table.php
に ファイルが生成されるので public function up()
の 中身を書き換えます
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('links', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('url')->unique();
$table->string('description');
$table->timestamps();
});
}
テストデータの作成
テストデータも コマンドから 雛形を作ります
php artisan make:factory LinkFactory --model=Link
を 叩くと database / factories / LinkFactory.php
に ファイルが生成されるので public function definition()
の 中身を書き換えます
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'title' => $this->faker->sentence(),
'url' => $this->faker->unique()->url(),
'description' => $this->faker->paragraph(),
];
}
この テストデータを 読み込ませるために database / seeders / DatabaseSeeder.php の function run() を 書き換えます
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// \App\Models\User::factory(10)->create();
\App\Models\Link::factory()->count(5)->create();
}
// \App\Models\User::factory(10)->create();
は ファイルに 元々有った為 残しています
元々に 無ければ この行は 要りません
マイグレーション
マイグレーションも コマンドから 行えます
テストデータを含む マイグレーション行う場合
php artisan migrate --seed
エラーが起きて マイグレーションが行えない場合
フレッシュして テストデータを含む マイグレーション行う場合
php artisan migrate:fresh --seed
フレッシュ は 全テーブルを ドロップしてから マイグレーションを 行うため 全データが 消失します
運用中のでは 行うことのない コマンドだと思うので 注意してください