gpt4 book ai didi

CakePHP - 'Console/cake schema create' 总是将记录插入到 'default' 连接并且不遵守 --connection 参数

转载 作者:行者123 更新时间:2023-12-04 04:45:45 25 4
gpt4 key购买 nike

我使用 Cake 控制台生成了一个模式文件,该模式文件使用 after() 方法在数据库中创建了一些默认记录。

'schema create' 命令适用于默认数据库,但是当我尝试为我的测试数据库执行相同的命令并使用 --connection 参数时......发生了一些奇怪的事情。它确实在测试数据库下创建了表,但它试图在默认数据库中插入记录。

我认为这可能与 after() 方法有关。

// Works. Creates the tables and inserts records successfully to the default

Console/cake schema create -s 1

// Breaks. Creates the tables under test but attempts to insert record in the default database

Console/cake schema create -s 1 --connection test

这是我的架构文件:
<?php 

// Use this Schema for all Stage_2.0 Releases
App::uses("ClassRegistry", "Utility");
App::uses("Shoe", 'Model');

class AppSchema extends CakeSchema {

public function before($event = array()) {
// the line below always outputs 'default'... even though --connection parameter is set to 'test'
debug($this->connection);
$db = ConnectionManager::getDataSource($this->connection);
$db->cacheSources = false;
return true;
}

public function after($event = array()) {
if(isset($event['create'])){
switch($event['create']){
case "shoes":
$this->InsertSampleShoes();
break;
}
}
}

public function InsertSampleShoes(){
$shoe = ClassRegistry::init("Shoe");
$records = array(
array(
"Shoe" => array(
"name" => "Shoe 1"
)
),
array(
"Shoe" => array(
"name" => "Shoe 2"
)
)
);
$shoe->saveAll($records);
}

// ... table name, column definitions etc ...

}

最佳答案

好的,在Mark Story在别处的回应之后,这个问题的答案是你需要在加载模型后为模型设置数据库配置,否则它也会使用默认值。

模式类直接与数据库集成,而模型通过正常的 cakephp 配置设置运行。

因此,对于上面的示例,请执行以下操作:

public function InsertSampleShoes(){
$shoe = ClassRegistry::init("Shoe");
$shoe->useDbConfig = $this->connection;
$records = array(
array(
"Shoe" => array(
"name" => "Shoe 1"
)
),
array(
"Shoe" => array(
"name" => "Shoe 2"
)
)
);
$shoe->saveAll($records);
}

关于CakePHP - 'Console/cake schema create' 总是将记录插入到 'default' 连接并且不遵守 --connection 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com