カテゴリ: Symfony 更新日: 2025/12/12

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. エンティティ作成後に行うこと

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

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

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド