カテゴリ: Symfony 更新日: 2026/01/09

SymfonyのDoctrine ORMの基本と使い始め方をやさしく解説!初心者でもわかるデータ管理

SymfonyのDoctrine ORMの基本と使い始め方
SymfonyのDoctrine ORMの基本と使い始め方

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

生徒

「Symfony(シンフォニー)でデータベースを使いたいときって、どうすればいいですか?」

先生

「Symfonyでは、Doctrine ORM(ドクトリン・オーアールエム)という仕組みを使うと、データベース操作がとても簡単になりますよ。」

生徒

「オーアールエムってなんですか?難しそうです…」

先生

「大丈夫ですよ。これからわかりやすく、Doctrine ORMの基本と使い方を一緒に見ていきましょう。」

1. Doctrine ORMとは?

1. Doctrine ORMとは?
1. Doctrine ORMとは?

Doctrine ORM(ドクトリン・オーアールエム)は、Symfony(シンフォニー)でデータベースを扱うときに欠かせない仕組みで、データをオブジェクトとして直感的に操作できるようにしてくれます。通常、データベースを扱うにはSQLという専門的な命令文を書く必要がありますが、Doctrine ORMを使えば、SQLを書かなくてもデータの保存・取得・更新ができるようになります。

ORMとは「Object Relational Mapping(オブジェクト・リレーショナル・マッピング)」の略で、データベースの表(テーブル)とPHPのクラスを結びつける考え方です。たとえば「ユーザー情報」を扱いたい場合、PHP側では「User」というクラスを作り、そのクラスがデータベースの「user」テーブルと対応します。

こうすることで、まるで通常のPHPクラスを扱うのと同じ感覚でデータベースの操作ができるようになり、初心者でも理解しやすく、複雑なSQLに悩む必要がなくなります。

Doctrine ORMのイメージをつかむ簡単なサンプル

次のように、PHPのオブジェクトに値を設定するだけでデータベースに保存できます。


$user = new User();
$user->setName('佐藤ひかり');  // PHPのオブジェクトに値をセット
$entityManager->persist($user); // 保存の準備
$entityManager->flush();        // 実際にデータベースへ反映

このように、Doctrine ORMは「PHPのオブジェクト操作」=「データベース操作」になるようサポートしてくれる便利な仕組みです。データ管理が初めての方でも扱いやすく、Symfonyでの開発において非常に重要な役割を持っています。

2. Doctrine ORMを使う準備をしよう

2. Doctrine ORMを使う準備をしよう
2. Doctrine ORMを使う準備をしよう

SymfonyでDoctrine ORMを使い始めるためには、最初に開発環境を整えておく必要があります。といっても、順番に進めれば複雑な作業はなく、初心者の方でも問題なく設定できます。ここでは、Symfonyプロジェクトの作成からデータベースの設定、Doctrineの導入までを丁寧に見ていきましょう。

  1. Symfonyプロジェクトを作成する
  2. データベースの接続設定を行う
  3. Doctrineパッケージをインストールする

ひとつずつ進めれば難しくありませんので、安心して進んでください。

① Symfonyプロジェクトを作ろう

まずは、Symfonyの新しいプロジェクトを作成します。まだ環境がない方はこの作業から始めてください。すでにプロジェクトがある方は、このステップは飛ばして構いません。


composer create-project symfony/skeleton my_project_name

このコマンドを実行すると、開発に必要な基本ファイルが自動で生成されます。フォルダ構成も整った状態で始められるため、新規学習者にも扱いやすくなっています。

② データベースを設定しよう

Symfonyがデータベースとやり取りできるように、.env ファイルで接続情報を設定します。ここでは MySQL を例にしていますが、PostgreSQL や SQLite など他のデータベースにも応用できます。


DATABASE_URL="mysql://ユーザー名:パスワード@127.0.0.1:3306/データベース名?serverVersion=5.7"

たとえば、ユーザー名が「root」、パスワードが空欄、データベース名が「test_db」の場合は次のように書き換えます。


DATABASE_URL="mysql://root:@127.0.0.1:3306/test_db?serverVersion=5.7"

実際には、ご自身が使用しているデータベース環境に合わせて数値やバージョンを変更します。間違えても後から修正できますので、気負わず設定してみてください。

③ Doctrineパッケージをインストール

最後に、Doctrine本体とSymfony用の便利ツールを追加します。Doctrineはデータベース操作の中心となる大切な存在で、初心者でも扱いやすいように整えられています。


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

orm-pack は Doctrine の主要機能をまとめたパッケージで、maker-bundle はエンティティの作成などを自動化してくれる開発補助ツールです。これらをインストールすることで、データ管理をスムーズに進める土台が整います。

ここまでの準備ができれば、Doctrine ORM を使ったデータ管理の第一歩を踏み出したことになります。次のステップでは、いよいよ実際のデータ構造を作る作業に進んでいきます。

3. Doctrineでエンティティを作ってみよう

3. Doctrineでエンティティを作ってみよう
3. Doctrineでエンティティを作ってみよう

エンティティとは、データベースの表(テーブル)をPHPのクラスとして表現したものです。アプリの中で扱う「データの設計図」のような役割を持ち、SymfonyとDoctrine ORMを使う上で必ず登場する重要な要素です。たとえば「ユーザー情報を保存したい」という場面であれば、User というクラスを作り、そのクラスがデータベースの user テーブルと対応します。

エンティティを作るときは、Symfonyが用意しているコマンドを使うのが便利です。初心者でも迷わず作成できるよう質問形式で進むため、安心して作業できます。

まずエンティティ作成コマンドを実行します:


php bin/console make:entity

このコマンドを実行すると、次のような質問が順番に表示されます。


Class name of the entity to create or update (e.g. Agreement):

ここでは「User」と入力すれば、「User」という名前のエンティティクラスが作成されます。その後、次のように「名前を追加しますか?」という項目を入れる流れになります。


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

たとえば「name」や「email」といった項目を追加すると、自動的にテーブルに必要なカラムが作られる準備が整います。難しい設定は一切なく、質問に答えていくだけでデータ構造が形になっていく点が、Doctrine ORMが初心者にとって扱いやすい理由のひとつです。

簡単なエンティティ作成のイメージ

入力例として、次のように質問へ答えていけば、ユーザー情報を扱うエンティティが完成します。


Class name: User
New field: name
Field type: string
New field: email
Field type: string

このように、特別なプログラミング知識がなくても、必要な項目を順番に指定するだけでデータモデルが作れるのがDoctrineの魅力です。エンティティが完成すれば、次のステップでデータベースに反映していけるようになります。

4. マイグレーションでデータベースに反映しよう

4. マイグレーションでデータベースに反映しよう
4. マイグレーションでデータベースに反映しよう

エンティティを作っただけでは、まだデータベースにはテーブルが作られていません。「マイグレーション」という仕組みを使って、クラスの内容をデータベースに反映させます。

次の2つのコマンドを実行します。


php bin/console make:migration
php bin/console doctrine:migrations:migrate

これで、Userクラスの内容に合わせて、データベースに「user」テーブルが作られます。

5. データを保存・取得してみよう

5. データを保存・取得してみよう
5. データを保存・取得してみよう

実際にプログラムの中でデータを保存したり、読み込んだりするには、エンティティマネージャという機能を使います。

たとえば、「User」エンティティに名前を入れて保存する例は次のとおりです。


$user = new User();
$user->setName('田中太郎');
$entityManager->persist($user);
$entityManager->flush();

逆に、保存されたデータを取り出すには、リポジトリという仕組みを使います。


$user = $userRepository->find(1);
echo $user->getName();

このように、Doctrine ORMを使えば、データベースの操作をPHPのオブジェクト感覚で扱えるようになります。

6. ORMのメリットとは?

6. ORMのメリットとは?
6. ORMのメリットとは?

Doctrine ORMを使うことで得られる主なメリットをまとめてみましょう。

  • SQL文を知らなくても大丈夫:オブジェクト操作だけでデータ管理が可能
  • データ構造の変更が簡単:エンティティクラスを書き換えるだけ
  • Symfonyと一体化:フレームワークの機能と自然に連携

初心者でも扱いやすいのが特徴で、Symfonyのアプリ開発では欠かせない存在です。

まとめ

まとめ
まとめ

ここまで、SymfonyのDoctrine ORMを使ったデータ管理の基本をじっくり学んできました。Doctrine ORMは、データベースという専門的で難しく見える世界を、PHPのオブジェクトとして扱えるように変換してくれる頼もしい存在です。初心者にとっては最初のハードルに感じられるかもしれませんが、一度仕組みを理解すれば、日常的なデータ登録や検索、更新などをとても自然に扱えるようになります。

特に、エンティティをクラスとして作成し、その内容をマイグレーションでデータベースに反映する流れは、Symfonyの中でも重要な基礎となります。この一連の作業を身につけることで、データベースとアプリケーションの動きがどのようにつながっているのかを深く理解でき、より高度な開発にも応用できるようになります。

また、Doctrine ORMの大きな魅力は、SQLを直接書かずにデータを保存・取得できる点です。これにより、プログラミング未経験の方でも、複雑な構文に悩むことなくデータベース操作を行えるようになります。Symfonyが提供している自動生成コマンドを使えば、必要なファイルやクラスの雛形が素早く作成できるので、開発のスピードも上がり、作業のミスも減らせます。

簡単なデータ保存サンプル

もう一度、Doctrine ORMでよく使う「データの保存」の例をおさらいしてみましょう。下記のサンプルでは、Userエンティティに名前をセットし、データベースに保存しています。


$user = new User();
$user->setName('山田花子');
$entityManager->persist($user);
$entityManager->flush();

このように、PHPのオブジェクトに値を入れて、そのまま保存する感覚で扱えるのがDoctrine ORMの魅力です。最初は難しく見えるかもしれませんが、慣れてくると「データベースとのやり取りがこんなに簡単なんだ」と実感できるはずです。

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

生徒

「Doctrine ORMって最初は難しそうに感じたけど、流れがわかるとすごく便利ですね。SQLを書かなくても動くのが嬉しいです!」

先生

「その通りですね。エンティティを作ってマイグレーションして、あとはオブジェクトを操作するだけでデータを保存できます。Symfonyと組み合わせれば、効率よく安全にデータ管理ができますよ。」

生徒

「これなら、もっと複雑なデータも扱えそうな気がしてきました。次は検索や更新の仕組みも試してみたいです!」

先生

「ぜひやってみましょう。Doctrineには便利な機能がまだまだたくさんありますから、一つずつ確実に覚えていけば必ず力になりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

SymfonyでDoctrine ORMとは何ですか?初心者でもわかりますか?

Doctrine ORMとは、Symfonyでデータベースを簡単に操作できる仕組みで、初心者でもSQLを使わずにデータの読み書きができるのが特徴です。
関連記事:
カテゴリの一覧へ
新着記事
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でルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)