sokil/php-mongo-yii

PHPMongo Yii 适配器

0.1.7 2018-02-16 09:06 UTC

This package is auto-updated.

Last update: 2024-08-28 01:10:32 UTC


README

PHPMongo ORM 提供的 Yii 1 适配器

安装

您可以通过 Composer 安装此库

{
    "require": {
        "sokil/php-mongo-yii": "dev-master"
    }
}

客户端配置

<?php

return array(
    'components' => array(
        // configure mongo service
        'mongo' => array(
            'class' => '\Sokil\Mongo\Yii\ClientAdapter',
            'dsn' => 'mongodb://127.0.0.1',
            'options' => array(
                'connect' => true,
                'readPreference' => \MongoClient::RP_SECONDARY_PREFERRED,
            ),
            'defaultDatabase' => 'database_name',
            'map' => array(
                'database_name' => array(
                    'collectionName1' => '\Collection\Class1',
                    'collectionName2' => '\Collection\Class2',
                )
            ),
            'logger' => 'somePsrCompartibleLogService',
        ),
    ),
    
    // define log
    'somePsrCompartibleLogService' => array(
        'class' => '\SomePSRLogger',
    ),
);

对于 PSR 兼容的日志记录器,您可以使用 Yii 的日志适配器 https://gist.github.com/sokil/56654a5abdfbcce411eaMonolog

在代码中使用 mongo

<?php
// get client
$client = \Yii::app()->mongo->getClient();
// get database
$database = \Yii::app()->mongo->getDatabase('database_name');
// get collection of default database
$collection = \Yii::app()->mongo->getCollection('collectionName1');

将 Yii 日志路由到 mongo

配置日志记录器以使用 mongo

<?php

return array(
    'components' => array(
        // define connection service
        'mongo' => array(
            'class' => '\Sokil\Mongo\Yii\ClientAdapter',
            // ...
        ),
        // configure log service
        'log' => array(
            'class' => 'CLogRouter',
            'routes' => array(
                array(
                    'class' => '\Sokil\Mongo\Yii\LogRoute',
                    'levels' => 'error, warning',
                    // define collection name where to store log records
                    'collectionName'    => 'log',
                    // define mongo connection service used to record logs
                    'serviceName'       => 'mongo',
                ),
            ),
        ),
    ),
);
        

数据提供者

<?php

// get cursor
$cursor = Yii::app()->mongo->getCollection('collName')->find()->where('type', 10);

// get data provider
$dataProvider = new \Sokil\Mongo\Yii\DataProvider($cursor, array(
    'attributes' => array('name', 'type'),
    'pagination' => array('pageSize' => 30)
));