オブジェクト リレーショナル マッピング (ORM) の基礎: Doctrine ORM を理解する
オブジェクト リレーショナル マッピング (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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











TortoiseORM は、Python 言語に基づいて開発された非同期 ORM フレームワークであり、Python 非同期アプリケーションでリレーショナル データベースを管理するために使用できます。この記事では、TortoiseORM フレームワークを使用してデータを作成、読み取り、更新、削除する方法を紹介し、リレーショナル データベースから単純なクエリと複雑なクエリを実行する方法も学びます。準備 このチュートリアルを開始する前に、Python (Python3.6 以降を推奨) と TortoiseOR をインストールする必要があります。

PHP でのデータベース操作は、オブジェクトをリレーショナル データベースにマップする ORM を使用して簡素化されます。 Laravel の EloquentORM を使用すると、オブジェクト指向構文を使用してデータベースと対話できます。モデル クラスを定義したり、Eloquent メソッドを使用したり、実際にブログ システムを構築したりすることで ORM を使用できます。

インターネットの発展に伴い、Web アプリケーションの開発は徐々に広く使用されるようになりました。最も重要な言語の 1 つは PHP です。ただし、データの管理と処理は常に開発者が直面する問題です。このため、ORM はデータ処理に適した選択肢となっています。 ORMとは何ですか? ORM は、Object-Relational Mapping の略で、オブジェクトとデータベース間のマッピングを記述するメタデータを使用して、オブジェクト指向プログラミング言語プログラム内のオブジェクトを変換する方法です。

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

Hibernate は、Java オブジェクトとリレーショナル データベース間のマッピングのための JavaORM フレームワークです。その ORM メカニズムには次の手順が含まれます。 注釈/構成: オブジェクト クラスは、マップされたデータベース テーブルと列を指定する注釈または XML ファイルでマークされます。セッションファクトリー: Hibernate とデータベース間の接続を管理します。セッション: データベースへのアクティブな接続を表し、クエリおよび更新操作を実行するために使用されます。永続性: save() または update() メソッドを通じてデータをデータベースに保存します。クエリ: 基準と HQL を使用して、データを取得するための複雑なクエリを定義します。

回答: ORM (オブジェクト リレーショナル マッピング) と DAL (データベース抽象化レイヤー) は、基礎となるデータベース実装の詳細を抽象化することでコードの可読性を向上させます。詳細な説明: ORM はオブジェクト指向のアプローチを使用してデータベースと対話し、コードをアプリケーション ロジックに近づけます。 DAL は、データベース ベンダーに依存しない共通のインターフェイスを提供し、さまざまなデータベースとの対話を簡素化します。 ORM と DAL を使用すると、SQL ステートメントの使用が減り、コードがより簡潔になります。実際のケースでは、ORM と DAL により製品情報のクエリが簡素化され、コードの可読性が向上します。

HibernateORM フレームワークには次の欠点があります。 1. クエリ結果とエンティティ オブジェクトをキャッシュするため、メモリ消費量が大きくなります。 2. アーキテクチャと構成についての深い理解が必要になるため、読み込みが遅くなり、予期しない遅延が発生します。 5. 多数のエンティティが同時にロードまたは更新されると、パフォーマンスのボトルネックが発生します。その結果、データベース間で差異が生じます。

Web アプリケーションの継続的な開発に伴い、対応する Web 開発フレームワークも登場しています。中でも Phalcon フレームワークは、その高いパフォーマンスと柔軟性により、ますます多くの開発者に支持されています。 Phalcon フレームワークは多くの便利なコンポーネントを提供しますが、その中で ORM (オブジェクト リレーショナル マッピング) は最も重要なものの 1 つと考えられています。この記事では、Phalcon フレームワークでの ORM の使用方法といくつかの実践的な適用例を紹介します。 ORM とは まず、ORM とは何かを理解する必要があります。 ORM はオブジェクト リリースです
