Laravel9 モデルの作成

php

ここまでで Laravel9をインストール して、とりあえず Breezeをインストール しました。
続いてLaravelの学習を進めてゆきたいと思います。

参考書籍

このあと以下のkindle本を参考にしながらLaravelの基礎を復習してみたいと思っています。

このLaravelの教科書はKindle Unlimited 対象のkindle本で、月額980円のKindle Unlimitedに加入していたら追加費用無しで読めるのでおすすめです。
この本では、家計簿アプリを作りながらLaravelの学習を進めていますが、少し複雑なので簡単なメモアプリを作っていこうと思います。

モデルの作成

まずはメモデータのモデルを作ります。

アプリケーションフォルダで

sail php artisan make:model -m Book

以下の2ファイルが作成されます。

App\Models\Book.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Book extends Model
{
    use HasFactory;
}

databese\migrations\作成日_create_books_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBooksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('books');
    }
}

作成日_create_books_table.php の public function up() に使いたいカラムを追加。
今回は ‘title’ と ‘content’ を追加します。
‘id’は自動増分IDとして bigIncrements(‘id’) とします。

public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->bigIncrements('id'); //変更
            $table->string('title'); //追加
            $table->text('content'); //追加
            $table->timestamps();
        });
    }

作成日_create_books_table.php 保存して、テーブルを作成するために以下のコマンド。

php artisan migrate

http://localhost:8080/ を開いて phpMyAdmin で bookテーブルが作成されていることを確認します。

ダミーデータの追加

Bookテーブルにダミーデータを追加します。
Seederファイルの作成

sail php artisan make:seeder BookTableSeeder

database/seeders/BookTableSeeder.php が作成されます。

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Book; // 追記

class BookSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
			Book::factory()->count(5)->create();    // 追記
    }
}

factoryの作成の前に、ダミーデータで日本語が使えるよう設定を変更しておきます。

config/app.php

'faker_locale' => 'ja_JP', //変更

factoryを作成します。

sail php artisan make:factory BookFactory

database/factories/BookFactory.php が作成されます。

<?php

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Book; //追加

class BookFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'title' => $this->faker->word(), //追加
            'content' => $this->faker->realText() //追加
        ];
    }
}

database/seeders/DatabaseSeeder.php を変更します。

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // \App\Models\User::factory(10)->create();
        $this->call(BookTableSeeder::class); //追加
    }
}

seederを実行します。

sail php artisan db:seed

phpMyAdminでbookテーブルにダミーデータが追加されたか確認しておきます。

fakerについての補足

今回のダミーデータ作成に関しては、「faker.js」というオープンソースのライブラリが使われています。
この「faker.js」、今年の初めに、開発者であるマラック・スクワイアーズ氏が、それらの最新バージョンに無限ループ処理を仕込むなど、意図的な改ざんを加えたバージョンをリリースしたことが、ニュースになっていました。

ただ程なくして、「Faker.js」は、コミュニティ主導のプロジェクトに変更されています。

それに伴って「Faker.js」では寄付を募集しているとのことなので、 「Faker.js」 を気に入って今後も使っていきたい場合には、寄付するのも良いかもしれません。

タイトルとURLをコピーしました