【发布时间】:2015-01-11 21:26:28
【问题描述】:
我有一个模型 - 汽车 - 汽车有几个关联的模型,让我们考虑其中一个与 hasMany 关系链接的模型 - 车轮
在我的 CarsController 中,我使用以下代码动态生成数据源 -
$schemaName = $this->Session->read('User.schema');
$config = ConnectionManager::getDataSource('default')->config;
$config['database'] = $schemaName;
ConnectionManager::create($schemaName, $config);
然后我使用以下代码行在我的汽车模型中设置此数据源
$this->Car->setDataSource($schemaName);
在此之后我可以查询和操作 Car,但是,如果我尝试使用以下语句在 Wheel 上操作 - 我会收到错误
$this->Car->Wheel->create();
$this->Car->Wheel->save($wheelData);
我得到的错误是 - 错误:[MissingTableException] 模型 Wheel 的表轮在数据源默认值中找不到。
由于某种原因,数据源没有从父模型传递到关联的子模型。如果我使用以下行在 Wheel 中明确设置数据源,那么一切正常。
$this->Car->Wheel->setDataSource($schemaName);
谁能帮助阐明这种行为以及如何解决这个问题?我觉得这不方便的原因是我的父模型有几个关联模型(它们还有关联模型)并且在每个模型上单独设置数据源听起来不正确。
附带问题 - 有没有办法在尝试动态创建数据源之前检查数据源是否已经存在?我有一个包装整个代码的 for 循环,每次循环迭代最终都会创建一个新的数据源
我使用的是 CakePHP 2.5.4
【问题讨论】:
标签: php cakephp cakephp-2.0