使用自定义连接在架构中创建模型数据

时间:2018-08-01 12:36:01

标签: cakephp cakephp-2.5

我有一个AppSchema,我在其中插入了一些行。到目前为止一切顺利:

$foo = ClassRegistry::init('Foo');
$foo->create();
$foo->saveMany(/*...*/);

我了解到intentionally--connection开关被每个Model::$useDbConfig覆盖:

  

如果您在回调中使用模型,请确保使用进行初始化   正确的数据源,以免它们退回到默认值   数据源:

public function before($event = array()) {
    $articles = ClassRegistry::init('Articles', array(
        'ds' => $this->connection
    ));
    // Do things with articles.
}

但是我无法将行插入default之外的其他位置:

Console/cake schema create --connection test --file schema_foo.php
class AppSchema extends CakeSchema {
    public function __construct($options = array()) {
        parent::__construct($options);
        // `$this->connection` contains value from `--connection`
        $foo = ClassRegistry::init('Foo', array('ds' => $this->connection));
        // `--connection` is ignored, `default` gets initialised
        $foo->create();
        $foo->saveMany(/*...*/);
    }
}

我误解了什么?

1 个答案:

答案 0 :(得分:1)

Cookbook示例是错误的,没有这样的语法,ClassRegistry::init()的第二个参数是布尔值。

第一个参数接受一个数组以传递更多选项:

ClassRegistry::init(array(
    'class' => 'Foo'
    'ds' => $this->connection
));

另请参阅API文档稍有损坏 API > ClassRegistry::init() :)