Symfonyでエンティティを作成する方法を初心者向けに徹底解説!make:entityコマンドの使い方ガイド
生徒
「Symfonyでデータベースのテーブルを作りたいんですけど、どうすればいいですか?」
先生
「Symfonyではエンティティというクラスを作って、データベースの設計をするんですよ。」
生徒
「それって難しい作業なんですか?」
先生
「いいえ、Symfonyのmake:entityコマンドを使えば、初心者でも簡単にエンティティを作成できますよ。一緒にやってみましょう!」
1. エンティティとは何か?
エンティティ(Entity)とは、データベースに保存する情報の型や構造を定義するPHPのクラスのことです。たとえば「ユーザー情報」「商品情報」「注文履歴」などを扱いたいとき、それぞれに対応したエンティティを作ります。
このエンティティが、データベースのテーブルという表に対応し、各クラスのプロパティがカラム(列)になります。
難しそうに感じるかもしれませんが、Symfonyにはmake:entityという便利なコマンドがあり、対話式でエンティティを簡単に作ることができます。
2. make:entityコマンドの準備
まず、Symfonyプロジェクトが準備できていて、DoctrineとMakerBundleがインストールされている必要があります。以下のコマンドでインストールできます。
composer require symfony/orm-pack
composer require --dev symfony/maker-bundle
これで、Doctrine ORMが有効になり、エンティティ作成用のコマンドも使えるようになります。
3. 実際にエンティティを作成してみよう
Symfonyでエンティティを作るには、ターミナルで次のコマンドを実行します。
php bin/console make:entity
このコマンドを実行すると、画面上に次のような質問が順番に出てきます。
Class name of the entity to create or update (e.g. GrumpyChef):
> User
ここでは「User(ユーザー)」という名前のエンティティを作ることにします。
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. エンティティの中身を確認してみよう
エンティティを作成すると、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;
}
}
このように、idとnameという2つのプロパティ(フィールド)があり、それぞれ自動的にアノテーション(属性)とメソッドが生成されます。
6. エンティティ作成時の型(type)一覧
make:entityコマンドでは、プロパティの型(type)を聞かれます。以下は代表的な型の一部です。
string:文字列。名前やタイトルなどに使う。text:長文。説明や内容などに使う。integer:整数。年齢や数量などに。boolean:真偽値。ON/OFFや有効/無効など。datetime:日付と時間。登録日時などに。
使いたい内容に応じて、適切な型を選びましょう。
7. よくある失敗と注意点
エンティティ作成で初心者がつまずきやすいポイントもあります。たとえば:
- プロパティ名に記号や日本語を使ってしまう(英語の小文字を使いましょう)
- 型を間違える(数字なのに
stringなど) - nullableの意味がわからない(null可とは、空欄でもOKという意味です)
間違えてもやり直しは可能なので、気軽に試してみましょう。
8. エンティティ作成後に行うこと
エンティティを作成したら、次はその内容を実際のデータベースに反映させる必要があります。そのためにマイグレーションという操作を行います。
マイグレーションについては別の記事で詳しく紹介しますが、簡単に言えば、「設計図をもとにデータベースのテーブルを作る」という作業です。