Symfony フレームワークでデータベース操作に Doctrine ORM を使用する方法
はじめに:
Symfony フレームワークは、Web アプリケーションを迅速かつ簡単に構築するための多くの強力なツールとコンポーネントを提供する人気のある PHP フレームワークです。重要なコンポーネントの 1 つは Doctrine ORM で、データベース操作を処理するエレガントな方法を提供します。
この記事では、Doctrine ORM を使用して Symfony フレームワークでデータベース操作を実行する方法を詳しく紹介します。次のトピックについて説明します:
1. Doctrine ORM の設定
Symfony で Doctrine ORM を使用するには、まず Doctrine Bundle をインストールする必要があります。ターミナルで次のコマンドを実行します:
composer require doctrine/doctrine-bundle
インストールが完了したら、Doctrine の接続情報を設定する必要があります。 .env
ファイルに次の行を追加します:
DATABASE_URL=mysql://username:password@127.0.0.1:3306/db_name
username
、password
、および db_name
を独自のものに置き換えます。データベース接続情報。
次に、config/packages/doctrine.yaml
ファイルを開き、次の設定を追加します:
doctrine: dbal: url: '%env(resolve:DATABASE_URL)%' driver: 'pdo_mysql' charset: utf8mb4 orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true
2. エンティティ クラスとデータベース マッピング
Doctrine ORM が使用するデータベース内のテーブルを表すエンティティ クラス。各テーブルのエンティティ クラスを作成し、それをデータベースにマップする必要があります。
まず、src/Entity
という名前のディレクトリを作成します。そのディレクトリに User.php
という名前のファイルを作成し、次の内容を追加します。
namespace AppEntity; use DoctrineORMMapping as ORM; /** * @ORMEntity * @ORMTable(name="users") */ class User { /** * @ORMId * @ORMGeneratedValue(strategy="AUTO") * @ORMColumn(type="integer") */ private $id; /** * @ORMColumn(type="string") */ private $name; // 添加其他属性和方法... // Getter和Setter方法... // 其他业务逻辑... }
上の例では、User
という名前のファイルを作成しました # のエンティティ クラスそしてそれを users
テーブルにマップします。 id
属性は自動生成された主キーとして定義され、name
属性は文字列です。
3. CRUD 操作の実行
Doctrine ORM は、CRUD (作成、読み取り、更新、削除) 操作を実行するための簡単なメソッドを多数提供します。
新しいエンティティの作成:
public function create() { $entityManager = $this->getDoctrine()->getManager(); $user = new User(); $user->setName('John Doe'); $entityManager->persist($user); $entityManager->flush(); return new Response('User created!'); }
エンティティの読み取り:
public function read($id) { $entityManager = $this->getDoctrine()->getManager(); $user = $entityManager->getRepository(User::class)->find($id); if (!$user) { throw $this->createNotFoundException('User not found!'); } return new Response('User name: ' . $user->getName()); }
エンティティの更新:
public function update($id) { $entityManager = $this->getDoctrine()->getManager(); $user = $entityManager->getRepository(User::class)->find($id); if (!$user) { throw $this->createNotFoundException('User not found!'); } $user->setName('Jane Doe'); $entityManager->flush(); return new Response('User updated!'); }
エンティティの削除:
public function delete($id) { $entityManager = $this->getDoctrine()->getManager(); $user = $entityManager->getRepository(User::class)->find($id); if (!$user) { throw $this->createNotFoundException('User not found!'); } $entityManager->remove($user); $entityManager->flush(); return new Response('User deleted!'); }
IV. クエリビルダーと DQL クエリ
基本的な CRUD 操作に加えて、クエリ ビルダーと DQL (Doctrine Query Language) を使用して複雑なクエリを実行することもできます。
クエリビルダーの例:
public function findByName($name) { $entityManager = $this->getDoctrine()->getManager(); $queryBuilder = $entityManager->createQueryBuilder(); $queryBuilder->select('u') ->from(User::class, 'u') ->where('u.name = :name') ->setParameter('name', $name); $users = $queryBuilder->getQuery()->getResult(); return new Response('Users found: ' . count($users)); }
DQL クエリの例:
public function findByAge($age) { $entityManager = $this->getDoctrine()->getManager(); $query = $entityManager->createQuery( 'SELECT u FROM AppEntityUser u WHERE u.age > :age' )->setParameter('age', $age); $users = $query->getResult(); return new Response('Users found: ' . count($users)); }
結論:
データベース操作に Symfony フレームワークで Doctrine ORM を使用するのは、非常にシンプルで効率的です。この記事では、Doctrine ORM の設定、エンティティ クラスの作成、CRUD 操作の実行、クエリ ビルダーと DQL クエリの使用方法について説明します。この記事が、Symfony と Doctrine ORM をより効果的に使用して高品質の Web アプリケーションを開発するのに役立つことを願っています。
以上がSymfony フレームワークでのデータベース操作に Doctrine ORM を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。