Phalcon-object-document-mapper
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が一致しない場合、レコード数がフェッチされるため、適切な出力は表示されません。