0Pricing
PHP Academy · レッスン

Eloquentモデルとマイグレーション

Artisanコマンドでモデルとデータベースマイグレーションを生成します

「Eloquentモデルとマイグレーション」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

Eloquent とは

Eloquent は Laravel の ActiveRecord ORM です。各データベーステーブルには、1 行を表し、クエリメソッドを提供する対応する Model クラスがあります。

モデルの生成

Artisan を使用してモデルを作成します。-m を追加すると、マイグレーションファイルも生成されます。

$ php artisan make:model Post -m
# Creates:
# app/Models/Post.php
# database/migrations/xxxx_create_posts_table.php

モデルクラス

最小構成の Eloquent モデルでは、Model を継承するだけで十分です。Eloquent はクラス名からテーブル名(複数形の snake_case)を推測します。

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ["title", "body", "user_id"];
}

マイグレーションファイル

マイグレーションでテーブルのスキーマを定義します。php artisan migrate を実行して適用します。

<?php
public function up(): void
{
    Schema::create("posts", function (Blueprint $table) {
        $table->id();
        $table->string("title");
        $table->text("body");
        $table->foreignId("user_id")->constrained()->cascadeOnDelete();
        $table->timestamps();
    });
}

マイグレーションの実行

保留中のマイグレーションをデータベースに適用します。

$ php artisan migrate
# Rollback:
$ php artisan migrate:rollback
# Fresh (drop all and re-migrate):
$ php artisan migrate:fresh

$fillable と $guarded

$fillable は一括代入を許可するカラムをホワイトリストで指定します。$guarded はカラムをブラックリストで指定します。十分に検討せず、本番環境で $guarded = [] を設定しないでください。

<?php
// Whitelist approach (recommended):
protected $fillable = ["title", "body"];

// Blacklist approach:
protected $guarded = ["id", "created_at"];

キャスト

$casts プロパティは、カラムの値を PHP の型に自動変換します。

<?php
protected $casts = [
    "is_published" => "boolean",
    "metadata"     => "array",       // JSON column
    "published_at" => "datetime",
];

非表示と表示

$hidden プロパティは、JSON または配列へのシリアライズ時にカラムを除外します。パスワードやトークンに便利です。

<?php
protected $hidden = ["password", "remember_token"];

カスタムテーブル名

$table プロパティを使用して、デフォルトのテーブル名を上書きします。

<?php
protected $table = "blog_posts"; // instead of "posts"

ソフトデリート

SoftDeletes トレイトと deleted_at カラムを追加します。レコードは実際には削除されず、タイムスタンプで削除済みとしてマークされ、通常のクエリから除外されます。

<?php
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model {
    use SoftDeletes;
}

タイムスタンプ

デフォルトでは、Eloquent が created_at と updated_at カラムを管理します。無効にするには $timestamps = false を設定します。

まとめ

Eloquent モデルはデータベーステーブルに対応します。Artisan を使用すると、モデルとマイグレーションを同時に生成できます。一括代入の安全性を確保するために $fillable を定義し、自動的な型変換には $casts を使用します。

確認問題

モデルと同時にマイグレーションを生成する Artisan のフラグはどれですか?

よくある質問

「Eloquentモデルとマイグレーション」レッスンは無料ですか?

はい。「Eloquentモデルとマイグレーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「Eloquentモデルとマイグレーション」で何を学びますか?

Artisanコマンドでモデルとデータベースマイグレーションを生成します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Eloquentモデルとマイグレーション」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Eloquentモデルとマイグレーション
  2. EloquentでCRUD
  3. Eloquentのリレーションシップ
  4. Eager Loadingとクエリスコープ
← PHP Academyに戻る