Phalcon-object-document-mapper

提供:Dev Guides
移動先:案内検索

Phalcon-オブジェクトドキュメントマッパー

オブジェクトリレーショナルマッパー(ORM)およびオブジェクトドキュメントマッパー(ODM)の概念を始める前に、SQLデータベースとNoSQLデータベースの違いを理解することが重要です。

次の表は、SQLとNoSQLの違いを強調しています-

SQL NoSQL
They are also termed as Relational Databases (RDBMS) They are called as non-relational or distributed database
The structure of database is constituted as tables and views It consists of document based and graph databases
It includes a predefined schema It has a dynamic schema
It is very powerful for defining and manipulating data It is powerful in maintaining data as collection of documents

Phalconには、SQLおよびNoSQLデータベースとマッピングする機能があります。 これは、NoSQLデータベースのオブジェクトドキュメントマッパー(ODM)およびSQLデータベースのオブジェクトリレーショナルマッパー(ORM)を使用して実現されます。

Phalconでは、ORMの概念は、前の章で見たように、指定されたテーブル名に関連付けられたモデルを作成することで構成されます。 すべての参照整合性制約に従います。

オブジェクトドキュメントマッパー(ODM)

これは、NoSQLデータベースに関連付けられたオブジェクトです。 名前が示すように、ドキュメント関連モジュールをマップします。 Phalconはこれを使用して、MongoDBなどのデータベースにマッピングします。

ステップ1 *-“ test” *という名前のMongoDBのデータベースを作成します。 このデータベースを使用してマッピングし、適切な応答を取得します。

テスト

モンゴ

  • ステップ2 *-データベースに挿入されたレコードを確認します。 それに関連付けられているコマンドは-
db.collection.find()

挿入されたレコード

すべてのドキュメントは、ODMの機能であるObjectIdでマップされることが確認されています。 ObjectId の値は一意であり、後でその特定のIDに関して保存されているすべてのデータを取得するために使用されます。

ステップ3 *-作成されたデータベースのモデルを設定します。 モデルは、 *Phalcon \ Mvc \ Collection を拡張するクラスです。 Test.php モデルには次のコードが含まれます。

<?php
use Phalcon\Mvc\Collection;

class Test extends Collection {
   public function initialize() {
      $this->setSource("test");
   }
}

ステップ4 *- *services.php でデータベース接続を含むプロジェクトを構成します。

//Simple database connection to localhost

$di->set(
   "mongo",
   function () {
      $mongo = new MongoClient();
      return $mongo->selectDB("test");
   },
   true
);

//Connecting to a domain socket, falling back to localhost connection

$di->set(
   "mongo",
   function () {
      $mongo = new MongoClient(
         "mongodb:///tmp/mongodb-27017.sock,localhost:27017"
      );
      return $mongo->selectDB("test");
   },
   true
);

ステップ5 *- *TestController.php を使用して、 ObjectId に関する値を出力します。

<?php

use Phalcon\Mvc\Controller;

class TestController extends Controller {
   public function index() {
     //Find record with _id = "5087358f2d42b8c3d15ec4e2"
      $test = Test::findById("5819ab6cfce9c70ac6087821");
      echo $test->data;
   }
}

出力には、objectIdと一致するデータが表示されます。 文書内のレコードごとにobjectIdが一致しない場合、レコード数がフェッチされるため、適切な出力は表示されません。

データ表示