laravel — データベース作成と migration

mysql でデータベースを作成し、テーブルを migration によって作成します。
慣れないと混乱するので、何度でも最初からやり直します。

プロジェクトの作成

プロジェクト名は「imgup」とします。


composer create-project laravel/laravel imgup

データベースの設定

データベースは mysql にします。
データベース名は「imgdb」とします。
phpmyadmin かコマンドラインで予めデータベースを作成しておきます。

.env を編集します。

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=imgdb
DB_USERNAME=root
DB_PASSWORD=pass

model の作成

データベース作成のための model を作成します。
model 名は「Image」です。


php artisan make:model Image

作成された Image.php を編集します。

app/Models/Image.php

<?php

namespace App\Models;

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

class Image extends Model
{
	protected $fillable = [
		'name',
		'path',
	];
}

migration ファイルの作成と migration

migration ファイルを作成します。

model は Image なので作成するテーブル名は images です。


php artisan make:migration create_images_table --create=images

database/migrations に作成された migration ファイルを編集します。

database/migrations/2022_11_21_072439_create_images_table.php

<?php

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

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

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

migration します。


php artisan migrate

phpmyadmin で imgdb データベースと images の構造を確認します。

データベースは、

images テーブルは、

何だかすごいですが、明示的ではないのですがなかなか慣れないですね。