mpenicaud / php-mongo-yii
PHPMongo Yii 适配器 - 基于 sokil/php-mongo 扩展
0.2.2
2016-04-25 20:17 UTC
Requires
- sokil/php-mongo: 1.*
This package is not auto-updated.
Last update: 2024-09-14 18:31:38 UTC
README
PHPMongo ORM 的 Yii 适配器 https://github.com/sokil/php-mongo
安装
您可以通过 Composer 安装库
{ "require": { "mpenicaud/php-mongo-yii": "dev-master" } }
客户端配置
<?php return array( 'components' => array( // configure mongo service 'mongo' => array( 'class' => '\mpenicaud\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/56654a5abdfbcce411ea 或 Monolog
在代码中使用 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' => '\mpenicaud\Mongo\Yii\ClientAdapter', // ... ), // configure log service 'log' => array( 'class' => 'CLogRouter', 'routes' => array( array( 'class' => '\mpenicaud\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 \mpenicaud\Mongo\Yii\DataProvider($cursor, array( 'attributes' => array('name', 'type'), 'pagination' => array('pageSize' => 30) ));