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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Eloquentモデルとマイグレーション
- EloquentでCRUD
- Eloquentのリレーションシップ
- Eager Loadingとクエリスコープ