wcatron/mongo-db-framework

一个集MongoDB框架和ODM(助手)于一体的工具。对任何项目都极具灵活性。

0.3.4 2016-05-02 23:22 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:31:04 UTC


README

一个集MongoDB接口和ODM(助手)于一体的工具。对任何项目都极具灵活性。

Build Status

概述

此框架允许您快速将对象映射到MongoDB集合中的文档。

设置

为文档创建模型,并让它们扩展 Document。实现 toDocumentfromDocument 方法,并设置 COLLECTION 常量。在您的 autoload.php 文件或数据库调用之前需要的地方调用 MDB::configure()。现在您可以执行查询并返回 PHP 对象。

安装

Composer

composer require wcatron/mongo-db-framework

模型 & MDB

模型

您的类。添加两个函数和一个变量,并允许任何模型创建对象。

class YourClass extend Document {

	const COLLECTION = 'YourCollection';

	function toDocument() {
		$document = parent::toDocument();
		// Your code setting the documents key/value pairs.
		return $document;
	}

	function fromDocument($document) {
		parent::fromDocument($document);
		// Your code setting the objects properties.
	}
}

当您有一个扩展文档的类的对象时,保存操作极为简单。

$object->save();

MDB

您与MongoDB的连接。要获取您的文档作为对象,请使用此单例 MDB::getInstance()

getObjectByID(Class::class,$id)

或者,您可以直接在自定义 Document 对象上调用 getByID($id)

这将返回您的确切对象。

getObjectsFromQuery(Class::class,$query)

基于自定义查询的对象数组。不过,并非所有查询都需要写出来。

getObjectsByKey('ClassName', 'KeyName', $value)

如果您仅通过一个键值对进行搜索,这个简单的函数将工作。

文档 & 对象

通过使用 toDocument 和 fromDocument 方法,类可以自定义其数据存储方式与在 PHP 应用程序中呈现方式。这比许多其他ODM提供了更大的灵活性。但是,它限制了直接将对象属性与文档键连接的能力。这是 KeysChanged 模型的原因。我们理解这可能在应用程序方面可能会因为额外的计算而变慢,但我们认为如果不担心属性变化如何影响底层文档结构,则更容易开发。

归一化数组和对象

有两种归一化方法可以将对象 ID 或 ID 数组转换为它们表示的对象,仅在他们被请求时。

示例

JSON
User Collection
{
	"_id":{"$oid":"1"}
	"username":"JohnDoe2000",
	"friends":["2","3"]
}
PHP
class User extends Document {
	var $friends; // must match property name for now.
	...

	function User() {
		$this->setArrayForKey('User','friends');
	}
}

$user = User::getByID('1');
$friends = $user->friends->get();

ID 作为字符串

所有 ID 都被视为字符串,并由 MongoDB 类转换为 MongoID。无需在 MongoID 和字符串之间进行转换。如果有人在这里看到重大问题,请提出。