sokil / php-mongo-yii
PHPMongo Yii Adapter
0.1.7
2018-02-16 09:06 UTC
Requires
- sokil/php-mongo: >= 1.13
This package is auto-updated.
Last update: 2024-11-28 01:38:00 UTC
README
Yii 1 Adapter for PHPMongo ORM
Installation
You can install library through Composer:
{ "require": { "sokil/php-mongo-yii": "dev-master" } }
Configuration of Client
<?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', ), );
For PSR compartible logger you can use adapter to Yii's log https://gist.github.com/sokil/56654a5abdfbcce411ea or Monolog
Using mongo in code:
<?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');
Routing Yii logs to mongo
Configure logger to use 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', ), ), ), ), );
Data Provider
<?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) ));