【问题标题】:doc has error? not suredoc有错误?没有把握
【发布时间】:2012-11-05 10:44:23
【问题描述】:

http://docs.phalconphp.com/en/0.6.0/reference/odm.html

设置多个数据库¶

在 Phalcon 中,所有模型都可以属于同一个数据库连接,也可以有一个单独的数据库连接。实际上,当 Phalcon\Mvc\Collection 需要连接到数据库时,它会请求应用程序服务容器中的“mongo”服务。您可以在初始化方法中覆盖此服务设置:

<?php

//This service returns a mongo database at 192.168.1.100
$di->set('mongo1', function() {
 $mongo = new Mongo("mongodb://scott:nekhen@192.168.1.100");
 return $mongo->selectDb("management");
});

//This service returns a mongo database at localhost
$di->set('mongo2', function() {
$mongo = new Mongo("mongodb://localhost");
return $mongo->selectDb("invoicing");
});

然后,在 Initialize 方法中,我们为模型定义连接服务:

<?php

class Robots extends \Phalcon\Mvc\Collection
{

    public function initialize()
    {
        $this->setConnectionService('management'); // here? 
    }

}

【问题讨论】:

    标签: phalcon


    【解决方案1】:

    你是对的。文档是错误的。正确的用法是使用setConnectionService设置合适的服务名(不是集合)。

    http://docs.phalconphp.com/en/latest/reference/odm.html

    <?php
    
    // This service returns a mongo database at 192.168.1.100
    $di->set(
        'mongo1', 
        function() 
        {
            $mongo = new Mongo("mongodb://scott:nekhen@192.168.1.100");
            return $mongo->selectDb("management");
        }
    );
    
    // This service returns a mongo database at localhost
    $di->set(
        'mongo2', 
        function() 
        {
            $mongo = new Mongo("mongodb://localhost");
            return $mongo->selectDb("invoicing");
        }
    );
    

    然后,在 Initialize 方法中,我们为模型定义连接服务:

    .. 代码块:: php

    <?php
    
    class Robots extends \Phalcon\Mvc\Collection
    {
        public function initialize()
        {
            $this->setConnectionService('mongo1');
        }
    
    }
    

    【讨论】: