オブジェクト リレーショナル マッピング (ORM) の基本: Doctrine ORM について
アプリケーションを開発するときは、データベースを操作してデータを保存および取得する必要があります。ただし、元のデータベースのクエリ コードを直接使用するのは不便です。オブジェクトとデータの間のマッピング関係を確立する必要があり、これが ORM の役割です。 ORM はオブジェクトとデータベース テーブルを自動的にマッピングおよび変換するため、データ操作が容易になり、コードの保守が容易になります。
Doctrine ORM は、PHP で最も人気のある ORM フレームワークの 1 つです。シンプルだが効果的な方法を使用して PHP オブジェクトとデータベース テーブルをマップし、CRUD 操作用の使いやすい API を提供します。
この記事では、設定、エンティティ(Entity)、マッピング(Mapping)、クエリ(Query)など、Doctrine ORMの基本的な知識を紹介します。
設定
始める前に、Doctrine ORM をインストールする必要があります。次のコマンドを使用して、Composer を通じてインストールできます:
composer require doctrine/orm
次に、PHP ファイルで Doctrine を初期化する必要があります。次のコードを渡すことができます:
use DoctrineORMToolsSetup; use DoctrineORMEntityManager; require_once "vendor/autoload.php"; $paths = array("path/to/entity-files"); $isDevMode = false; // the connection configuration $dbParams = array( 'driver' => 'pdo_mysql', 'user' => 'your_database_user', 'password' => 'your_database_password', 'dbname' => 'your_database_name', ); $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); $entityManager = EntityManager::create($dbParams, $config);
上記のコードでは、最初にエンティティ ファイルへのパスを指定します。次に、ドライバー、ユーザー名、パスワード、データベース名などのデータベース接続パラメーターを指定しました。最後に、Setup::createAnnotationMetadataConfiguration() 関数を使用してメタデータを構成し、EntityManager::create() 関数を使用してエンティティ マネージャーを作成します。
エンティティ
実際、モデルとエンティティは同じものです。データベーステーブルをマップするエンティティクラスを作成する必要があります。このクラスは DoctrineORMMapingClassMetadata クラスを継承し、DoctrineORMMapingEntity および DoctrineORMMapingTable アノテーションを使用する必要があります。
use DoctrineORMMapping as ORM; /** * @ORMEntity * @ORMTable(name="users") */ class User { /** * @ORMId * @ORMGeneratedValue * @ORMColumn(type="integer") */ private $id; /** * @ORMColumn(type="string") */ private $name; /** * @ORMColumn(type="string", length=100, unique=true) */ private $email; // ... getters and setters }
上記のコードでは、「users」という名前のデータベース テーブルをマップする User エンティティ クラスを定義しました。これには、$id、$name、$email の 3 つの属性があります。アノテーションは、Doctrine ORM にこれらのプロパティのマッピング方法を指示します。たとえば、$id プロパティは主キーで自動インクリメントされ、$name プロパティは varchar 型のデータベース列にマッピングされ、$email プロパティは varchar 型にマッピングされ、データベーステーブル内で一意である必要があります。
マッピング
エンティティを定義した後、エンティティをデータベーステーブルにマッピングする方法をDoctrine ORMに指示する必要があります。 XML、コメント、または YAML を使用してマッピング関係を定義できます。
ここでは、アノテーションを使用してマッピング関係を定義します。たとえば、以下のコードでは、User エンティティを users
データベース テーブルにマップするマッピング関係を定義します。
/** * @ORMEntity * @ORMTable(name="users") */ class User { // properties ... // many-to-one association /** * @ORMManyToOne(targetEntity="Department") * @ORMJoinColumn(name="department_id", referencedColumnName="id") */ private $department; }
上のコードでは、Department Many を持つ User エンティティを定義します。エンティティ間の 1 対 1 の関係。すべてのマッピング関係定義には注釈を付ける必要があります。
Query
Doctrine ORM は、CRUD 操作を簡単に実行できるようにする、使いやすいクエリ API のセットを提供します。たとえば、次のコードは、Doctrine を使用してエンティティをクエリする方法を示しています。
$userRepository = $entityManager->getRepository('User'); $users = $userRepository->findAll(); foreach ($users as $user) { echo sprintf("-%s ", $user->getName()); }
上記のコードでは、$entityManager 変数を使用してユーザー リポジトリ インスタンスを取得します。次に、findAll() メソッドを使用してすべての User インスタンスを取得し、各インスタンスのユーザー名を出力します。
概要
この記事では、設定、エンティティ、マッピング、クエリなど、Doctrine ORM の基本的な知識を紹介します。 ORM は、データベース関連関数のコーディングを大幅に簡素化できる非常に強力なツールです。この記事が ORM を理解するのに役立ち、Doctrine ORM についてさらに学び、使い始めることができることを願っています。
以上がオブジェクト リレーショナル マッピング (ORM) の基礎: Doctrine ORM を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。