

データベースを切り替えたあとに、取得したデータの$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を切り替えなければ、データは全て正しく取れます。

困ってます。教えてください。

[code]

    //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;
         }
    }
    
[/code]


CC BY-SA 3.0
2015-10-02T15:16:48.350
17195
2015-10-04T03:36:13.367
2015-10-04T03:36:13.367
8000
12545
question
php cakephp
モデル内でuseDbConfigを変更すると、hasManyアソシエーションがうまく動作しない


この場合 `PostsTag` と `PostsTag_Sub` は同じクラスでも別インスタンスになるようですから、`PostsTag_Sub` に対しても
DbConfig を変更する必要があるのではないでしょうか。

[code]

    public function dbChange($database)
    {
        $this->useDbConfig = $database;
        $this->PostsTag->useDbConfig = $database;
        $this->PostsTag_Sub->useDbConfig = $database;
    }
    
[/code]

※質問に書かれたコードとマニュアル等から推測しただけなので、動作確認はしていません


CC BY-SA 3.0
2015-10-04T03:29:33.083
17239
2015-10-04T03:29:33.083
8000
17195
answer