Laravelのモデルの作成と使い方

Laravelのモデルの作成と使い方は定形が決まっているのでその他のフレームワークと比べても比較的覚えやすいです。
Laravel 8.x マイグレーション
データベーステーブルの状態をSQLではなくLaravelのフレームワーク内で管理しようとする思想なので、可能な限りLaravelで操作した方がベストですが、私的にはどうしてもSQL文で書いた方がわかりやすいっていうのはあります。ですが、migrationではMVCを一気通貫で作ってしまう方法とかもあるのでやはり便利です。

マイグレーションの生成

マイグレーションファイルはapp/database/migrations以下に生成されます。認証/認可の設定はDBセッションでの設定でいくつかのテーブルを作成するためのファイルがすでにあったりします。DBにテーブルをまだ作成していないときはまだ何もありません。
ここではsampleテーブルを作成してみます。Laravelの習慣に従って以下のコマンドを実行します。

$ php artisan make:migration create_samples_table

新規でテーブルを作成する場合は、create_で始めるのが習慣になっています。app/database/migrations/2021_08_05_092950_create_samples_table.phpが作成されます。これでマイグレーション実行時(テーブル作成時)のマイグレーションファイルが作成されます。デフォルトでは、idとtimestampのカラムが自動的に作成されるようなコードが生成されています。

<?php

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

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

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

このファイルに必要なカラムの追加、必要なカラムの定義をして、テーブルの生成をします。
ここではテストカラムを2つ3つ作成してみることにします。こういったかたちにしてみます。

    public function up()
    {
        Schema::create('sample', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('remark');
            $table->timestamps();
        });
    }

マイグレーションしてみます。

$ php artisan migrate
(./vendor/bin/sail artisan migrate)

マイグレーションが正しく実行されました。

Migrating: 2014_10_12_200000_add_two_factor_columns_to_users_table
Migrated:  2014_10_12_200000_add_two_factor_columns_to_users_table (232.02ms)
Migrating: 2021_08_05_090208_create_flights_table
Migrated:  2021_08_05_090208_create_flights_table (22.49ms)
Migrating: 2021_08_05_092950_create_samples_table
Migrated:  2021_08_05_092950_create_samples_table (25.06ms) ←これ

phpmyadminやコマンドラインで正しくテーブルが作成されたか確認しましょう。
マイグレーションが実行されるとテーブルが作成されて、migrationsテーブルに実行結果が一行追加されます。

モデルの作成

Laravel 8.x Eloquentの準備

マイグレーションファイルを作成するときは、どっちにしろモデルファイルも必要ということで、

$ php artisan make:model Sample --migration

こんな風に同時に作ることができます。こっちの方が便利です。
Laravelは習慣として、マイグレーションファイルは複数形、モデルファイルは単数形ということになっていて上記のコマンドでもそういうファイル名に自動的に命名されます。

app/Models/Sample.php
database/migrations/2021_08_05_164123_create_samples_table.php

ここでも同様にマイグレーションファイルを修正してからphp artisan migrateを実行してテーブルを作成します。たいていの場合モデルファイルはそのまま使えます。


  • News

  • Categories

  • Tags

  • Archives

  • Page index