OhDM 是一个用于 MongoDB 的 PHP 对象文档映射器 (ODM)

1.1.0 2015-08-06 06:44 UTC

This package is auto-updated.

Last update: 2024-09-16 01:30:05 UTC


README

Build Status

在 Packagist 上查看

OhDM

OhDM 是一个 ODM,它是一个简单的 PHP 库,可以简化与 MongoDB 交互的过程。

稳定性

OhDM 是一个新项目,因此一些功能可能无法按预期工作。目前它被归类为早期阶段,并且有一个 1.0.0 版本,我们将其归类为稳定版。

尽管如此,我们将引入一些新功能以进一步增强库,但它们将相应地进行版本控制。

提供帮助

最简单的方法是通过分支和提出 PR 来提供帮助。我唯一的要求是您将更改贡献回这个仓库。

除非您已测试(并编写了测试)所做的更改,否则更改将不会合并。我们也力求达到高测试覆盖率。

目前,我们的测试覆盖率达到了 99.33%,我们真的希望保持在那个水平附近。

快速入门

为了快速开始,您首先需要设置配置对象。它是一个单例。

<?php
Config::init(
    new \MongoClient(
        'mongodb://127.0.0.1',
        array('connect' => false)
    ),
    'pets' // The database name
);

现在您需要一个集合模型。例如:

<?php
namespace My\Namespace\Name;

use OhDM\Collection;

class Cats extends Collection
{
    public $name = null;

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }
}

查询介绍

创建文档

<?php
$record = new Cats();
$record->setName('fuzzy');
$record->save();

按 ID 查找

当您知道对象的 _id 时,查找的最快方式。OhDM 利用这一点并实现了一种快速便捷的方式来定位它们。

<?php
$record = Cats::findById(
    new \MongoId('53466f2978f7a8bc5c1ae933')
);
if ($record) {
    // $record is instance of Cats
    echo 'My cats name is: ' . $record->getName();
} else {
    // couldn't find it!
}

按查询查找

OhDM 支持通过高级查询查找文档,这将返回对象形式的项。剧透一下:它就像下面看起来那么简单!

<?php
$command = array(
    'query' => array('name' => 'kitty'),
    'fields' => array(),
    'skip' => 0,
    'limit' => 100,
    'sort' => array(
        'name' => 1
    )
);
$ohDmCursor = Cats::find($command);
while ($ohDmCursor->hasNext()) {
    $thisCat = $ohDmCursor->getNext(); // it's an instance of Cats
}

删除

可以在任何已保存的文档上调用删除,并将其从数据库中移除。

<?php
$record = Cats::findById(
    new \MongoId('53466f2978f7a8bc5c1ae933')
);
$record->delete();

更新

由于它是一个对象,只需更改变量并对其调用 save() 即可。

<?php
$record = Cats::findById(
    new \MongoId('53466f2978f7a8bc5c1ae933')
);
if ($record) {
    // $record is instance of Cats
    echo 'My cats name was: ' . $record->getName();

    $record->setName('kitty');
    $record->save();

    echo 'My cats name is now: ' . $record->getName();

} else {
    // couldn't find it!
}