カテゴリ: Symfony 更新日: 2026/04/30

Symfonyでエンティティを作成する方法を初心者向けに徹底解説!make:entityコマンドの使い方ガイド

Symfonyでエンティティを作成する方法(make\:entityコマンド)
Symfonyでエンティティを作成する方法(make\:entityコマンド)

先生と生徒の会話形式で理解しよう

生徒

「Symfonyでデータベースのテーブルを作りたいんですけど、どうすればいいですか?」

先生

「Symfonyではエンティティというクラスを作って、データベースの設計をするんですよ。」

生徒

「それって難しい作業なんですか?」

先生

「いいえ、Symfonyのmake:entityコマンドを使えば、初心者でも簡単にエンティティを作成できますよ。一緒にやってみましょう!」

1. エンティティとは何か?

1. エンティティとは何か?
1. エンティティとは何か?

エンティティ(Entity)とは、データベースに保存する情報の型や構造を定義するPHPのクラスのことです。たとえば「ユーザー情報」「商品情報」「注文履歴」などを扱いたいとき、それぞれに対応したエンティティを作ります。

このエンティティが、データベースのテーブルという表に対応し、各クラスのプロパティがカラム(列)になります。

難しそうに感じるかもしれませんが、Symfonyにはmake:entityという便利なコマンドがあり、対話式でエンティティを簡単に作ることができます。

2. make:entityコマンドの準備

2. make:entityコマンドの準備
2. make:entityコマンドの準備

まず、Symfonyプロジェクトが準備できていて、DoctrineMakerBundleがインストールされている必要があります。以下のコマンドでインストールできます。


composer require symfony/orm-pack
composer require --dev symfony/maker-bundle

これで、Doctrine ORMが有効になり、エンティティ作成用のコマンドも使えるようになります。

3. 実際にエンティティを作成してみよう

3. 実際にエンティティを作成してみよう
3. 実際にエンティティを作成してみよう

Symfonyでエンティティを作るには、ターミナルで次のコマンドを実行します。


php bin/console make:entity

このコマンドを実行すると、画面上に次のような質問が順番に出てきます。


Class name of the entity to create or update (e.g. GrumpyChef):
 > User

ここでは「User(ユーザー)」という名前のエンティティを作ることにします。

4. プロパティ(カラム)を追加する

4. プロパティ(カラム)を追加する
4. プロパティ(カラム)を追加する

エンティティ名を入力すると、次に「どんな情報を扱うか?」を決めるステップに進みます。たとえば次のように答えます。


New property name (press <return> to stop adding fields):
 > name

Field type (enter ? to see all types) [string]:
 > string

Field length [255]:
 > 

Can this field be null in the database (nullable) (yes/no) [no]:
 > no

このように入力すると、「name」という文字列のカラムが作成されます。必要なだけ、同じようにプロパティを追加していきます。最後にエンターキーを押すと完了します。

5. エンティティの中身を確認してみよう

5. エンティティの中身を確認してみよう
5. エンティティの中身を確認してみよう

エンティティを作成すると、src/Entityディレクトリにファイルが自動生成されます。先ほどのUserエンティティは次のようになります。


use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class User
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private int $id;

    #[ORM\Column(length: 255)]
    private string $name;

    public function getId(): int
    {
        return $this->id;
    }

    public function getName(): string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;
        return $this;
    }
}

このように、idnameという2つのプロパティ(フィールド)があり、それぞれ自動的にアノテーション(属性)とメソッドが生成されます。

6. エンティティ作成時の型(type)一覧

6. エンティティ作成時の型(type)一覧
6. エンティティ作成時の型(type)一覧

make:entityコマンドでは、プロパティの型(type)を聞かれます。以下は代表的な型の一部です。

  • string:文字列。名前やタイトルなどに使う。
  • text:長文。説明や内容などに使う。
  • integer:整数。年齢や数量などに。
  • boolean:真偽値。ON/OFFや有効/無効など。
  • datetime:日付と時間。登録日時などに。

使いたい内容に応じて、適切な型を選びましょう。

7. よくある失敗と注意点

7. よくある失敗と注意点
7. よくある失敗と注意点

エンティティ作成で初心者がつまずきやすいポイントもあります。たとえば:

  • プロパティ名に記号や日本語を使ってしまう(英語の小文字を使いましょう)
  • 型を間違える(数字なのにstringなど)
  • nullableの意味がわからない(null可とは、空欄でもOKという意味です)

間違えてもやり直しは可能なので、気軽に試してみましょう。

8. エンティティ作成後に行うこと

8. エンティティ作成後に行うこと
8. エンティティ作成後に行うこと

エンティティを作成したら、次はその内容を実際のデータベースに反映させる必要があります。そのためにマイグレーションという操作を行います。

マイグレーションについては別の記事で詳しく紹介しますが、簡単に言えば、「設計図をもとにデータベースのテーブルを作る」という作業です。

まとめ

まとめ
まとめ

Symfonyのエンティティ作成のポイントを振り返ろう

ここまで、Symfonyでデータベース設計を行うための基本となるエンティティの作成方法について解説してきました。SymfonyでWebアプリケーションを開発するとき、データベースとプログラムを連携させる仕組みは非常に重要です。その中心となるのがDoctrine ORMとエンティティです。

エンティティとは、データベースのテーブル構造をPHPのクラスとして定義したものです。ユーザー情報、商品情報、記事データ、注文履歴など、Webシステムで扱うあらゆるデータはエンティティとして設計されます。Symfonyではmake:entityコマンドを使うことで、初心者でも対話形式で簡単にエンティティクラスを作成できます。

make:entityコマンドを実行すると、エンティティのクラス名を入力し、その後にカラムとなるプロパティを順番に追加していく流れになります。文字列、整数、日付、真偽値など、データの種類に応じて適切な型を設定することができます。これによって、データベースの設計とPHPのコードが自然に連携するようになります。

Symfonyでエンティティを作る最大のメリットは、データベース設計とプログラムの構造を一体化できることです。従来のようにSQLでテーブルを作り、別途プログラムを書く方法と比べて、開発効率が大きく向上します。特にDoctrine ORMを利用することで、オブジェクト指向プログラミングの形でデータベースを扱えるようになります。

エンティティ作成の基本手順

Symfonyでエンティティを作る基本的な手順を整理すると、次のようになります。まずDoctrineとMakerBundleをインストールし、エンティティ作成コマンドを利用できる状態にします。その後、make:entityコマンドを実行してエンティティを作成し、プロパティを追加していきます。


composer require symfony/orm-pack
composer require --dev symfony/maker-bundle

次に、Symfonyのコンソールコマンドを使ってエンティティを生成します。これによって、src Entityフォルダの中に新しいエンティティクラスが自動的に作成されます。


php bin/console make:entity

このコマンドを実行すると、エンティティの名前を入力し、その後にフィールドを順番に追加していきます。例えばユーザー情報を管理する場合は、ユーザー名、メールアドレス、登録日時などのカラムを設定します。

生成されるエンティティクラスの例

make:entityコマンドでエンティティを作成すると、Doctrineの属性が設定されたPHPクラスが自動生成されます。Symfonyではこのエンティティクラスを通してデータベースのデータを操作します。


use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class User
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private int $id;

    #[ORM\Column(length: 255)]
    private string $name;

    public function getId(): int
    {
        return $this->id;
    }

    public function getName(): string
    {
        return $this->name;
    }

    public function setName(string $name): self
    {
        $this->name = $name;
        return $this;
    }
}

このように、エンティティクラスにはプロパティとアクセサメソッドが自動生成されます。これにより、データの取得や更新を安全に行うことができます。Symfonyのエンティティ設計では、ゲッターとセッターを使ってデータを扱うのが基本となります。

エンティティ設計で意識しておきたいこと

Symfonyのエンティティを設計する際には、いくつか意識しておきたいポイントがあります。まず、プロパティ名は英語の小文字を基本にし、意味の分かりやすい名前にすることが重要です。例えばname、email、createdAtなどのように、用途が明確になる名前をつけるとコードの可読性が高くなります。

また、データ型の選択も非常に重要です。数値であればinteger、長い文章であればtext、日時であればdatetimeなど、適切な型を選択することでデータベースの整合性が保たれます。間違った型を設定すると後から修正が必要になることもあるため、設計段階で慎重に決めることが大切です。

nullableの設定も重要なポイントです。nullableがyesの場合は空の値を保存することができます。逆にnoに設定すると必ず値を入力しなければならないカラムになります。ユーザー名やメールアドレスなど必須の情報はnull不可にするなど、用途に応じた設定が必要です。

エンティティ作成後の流れ

エンティティを作成しただけでは、まだデータベースにはテーブルが作られていません。Symfonyではエンティティの内容をデータベースに反映するためにマイグレーションという仕組みを使います。マイグレーションを実行することで、エンティティの設計に基づいたテーブルが自動生成されます。

SymfonyとDoctrine ORMを組み合わせて使うことで、データベース設計、エンティティ作成、データ操作までを統一された方法で管理できます。これにより、保守性が高く拡張しやすいWebアプリケーションを作ることができます。

先生と生徒の振り返り会話

生徒

Symfonyでデータベースを扱うにはエンティティというクラスを作るんですね。最初は難しそうに見えましたが、make:entityコマンドを使うと意外と簡単に作れることが分かりました。

先生

その通りです。SymfonyではDoctrine ORMを使うことで、データベースのテーブルをPHPのクラスとして管理できます。これがエンティティです。make:entityコマンドは初心者でも使いやすい便利な機能ですね。

生徒

エンティティを作るときには、カラムになるプロパティを設定して、型やnullの設定を決める必要があるんですね。stringやintegerなどの型も覚えておいた方が良さそうです。

先生

そうですね。エンティティ設計はデータベース設計とほぼ同じ意味になります。どんなデータを保存するのかを考えながら、適切な型やカラム名を設定していくことが大切です。

生徒

そしてエンティティを作った後は、マイグレーションを実行してデータベースにテーブルを作る流れになるんですね。

先生

その通りです。エンティティ作成、マイグレーション、データ操作という流れを理解しておくと、Symfonyでのデータベース開発がとてもスムーズになります。今回学んだmake:entityコマンドは、Symfony開発の基本となる重要な知識なのでしっかり覚えておきましょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelでリダイレクトやフラッシュメッセージをテストする方法を完全解説!初心者向けLaravelテスト入門
New3
CodeIgniter
CodeIgniterのセキュリティ対策を完全ガイド!初心者が守るべき基本設定
New4
Symfony
SymfonyのEventSubscriberとEventListenerの違いを初心者向けにやさしく解説
人気記事
No.2
Java&Spring記事人気No2
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.3
Java&Spring記事人気No3
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法
No.5
Java&Spring記事人気No5
Laravel
LaravelをDockerで動かすメリットと導入の全体像を徹底解説!初心者向け入門ガイド
No.6
Java&Spring記事人気No6
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.7
Java&Spring記事人気No7
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.8
Java&Spring記事人気No8
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方