dilab/cake-mongo

CakePHP 3.3 的 MongoDB 数据源和数据映射器

安装: 494

依赖: 0

建议者: 0

安全: 0

星标: 4

关注者: 3

分支: 11

开放问题: 7

类型:cakephp-plugin

dev-master 2020-01-20 09:30 UTC

This package is auto-updated.

Last update: 2024-09-20 19:19:51 UTC


README

License Total Downloads

该插件在 MongoDB 之上提供了一个类似 ORM 的抽象。

安装

要安装 CakeMongo 插件,您可以使用 composer。从您的应用程序的根目录(其中包含 composer.json 文件)运行以下命令:

composer require imdad/cake-mongo:dev-master

您需要将以下行添加到您的应用程序的 config/bootstrap.php 文件中:

Plugin::load('Imdad/CakeMongo');

此外,您还需要在您的 config/app.php 文件中配置 'cake_mongo' 数据源连接。一个示例配置如下:

'Datasources' => [
    //other datasources
    'cake_mongo' => [
        'className' => 'Imdad\CakeMongo\Datasource\Connection',
        'driver' => 'Imdad\CakeMongo\Datasource\Connection',
    ]
]

概述

CakeMongo 插件使与 MongoDB 集合交互变得更加容易,并提供了一个类似于数据库访问和 ORM 的接口。要开始使用,您应该创建一个 Collection 对象。在 CakeMongo 中,Collection 对象是类似“仓库”或表格的类。

// in src/Model/Collection/ArticlesCollection.php

namespace App\Model\Collection;

use Imdad\CakeMongo\Collection;

class ArticlesCollection extends Collection
{

}

请勿混淆 CakeMongo 的 Collection 类与 CakePHP 的 Collection 类。

然后您可以在您的控制器中使用您的 Collection 类

public function beforeFilter(Event $event)
{
    parent::beforeFilter($event);
    // Load the Collection using the 'Mongo' provider.
    $this->loadModel('Articles', 'Mongo');
}


public function add()
{
    $article = $this->Articles->newEntity();
    if ($this->request->is('post')) {
        $article = $this->Articles->patchEntity($article, $this->request->getData());
        if ($this->Articles->save($article)) {
            $this->Flash->success(__('The article has been saved.'));

            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('The article could not be saved. Please, try again.'));
    }
    $this->set(compact('article'));
}

我们还需要为我们的索引文章创建一个基本的视图

<?= $this->Form->create($article); ?>
<?= $this->Form->control('title', ['empty' => true]); ?>
<?= $this->Form->control('body', ['type' => 'textarea']); ?>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>

现在您应该能够提交表单并将新文档添加到 MongoDB 中。

或者,您可以使用 CollectionRegistry 在任何您想要的位置加载 Collection

use Imdad\CakeMongo\CollectionRegistry;

$this->Articles = CollectionRegistry::get('Articles');

支持

GitHub 问题 - 在此处提交错误/问题!提交错误时,请尽可能提供详细信息。如果能创建单元测试将会更好。