モデル内でuseDbConfigを変更すると、hasManyアソシエーションがうまく動作しない
データベースを切り替えたあとに、取得したデータの$hasManyアソシエーションした部分の一部が紐づかないです。
<テーブル>
- postsテーブル
- tagsテーブル
- posts_tagsテーブル(中間テーブル)
<モデル>
- post.php
- tag.php
- posts_tag.php($name = 'PostsTag')
<db環境>
- 開発環境('develompent')
- テスト環境('testDb')
※database.phpは省略
dbを切り替えた後に、取得したデータが正しくとれません。
下記を見てください。
postモデルに中間テーブルのモデルであるPostsTagを$hasmanyしています。
このとき取得したデータである$dataの[PostsTag]には、PostsTagモデルのデータは取れますが、、、、、
サブで定義した?[PostsTag_Sub]には、PostsTagモデルのデータは取れません!!!!!!!!!!!!!
ちなみにdbを切り替えなければ、データは全て正しく取れます。
困ってます。教えてください。
//post.php
class Post extends AppModel
{
public $hasMany = [
'PostsTag',
'PostsTag_Sub' => [
'className' => 'PostsTag',
],
];
public function getData()
{
//開発環境(development)にいる
$oldDb = $this->Tag->useDbConfig; //development
// テスト環境(testDb)に切り替える。
$database = 'testDb';
$this->dbChange($database);
//データ取得
$data = $this->find('all');
print_r($data);
}
//データベース切り替え処理
public function dbChange($database)
{
$this->useDbConfig = $database;
$this->tag->useDbConfig = $database;
$this->posts_tag->useDbConfig = $database;
}
}