2016-06-22 6 views
0

ここで私の選択肢の1つを改善しようとしています。 次のように私のモデルは次のとおりです。検索でhabtmフィールドを選択しないでください

Network 
--->hasMany Esx 
--->hasAndBelongToMany Environment 

ネットワークは0 ESXおよび/または0の環境だからここに私はいくつかのネットワーク情報およびESXのセクションではなく、環境情報を選択したい

を持っているかもしれません。だから、

$this->Network->find('all',array(
      'conditions'=>array(
       'Network.plateform'=>IAAS, 
       'Network.active'=>true), 
      'fields'=>array(
       'Network.id', 
       'Network.name') 
    )); 

、私はそれはまた、ESX を削除しますので、私は環境を削除するには、再帰的に下げることができないだけで、VLANフィールドを選択
にフィールドを使用することはできません私が使用することをお勧めSO他の質問を上の発見$ this-> Network-> schema()を実行し、不要なフィールドを削除しますが、hmおよびhabtm構造体は返されません。

要するに

、どのように私はこの

0 => array(
    'Network' => array(
      'id' => '38', 
      'name' => 'HP_LOW'), 
    'Esx' => array(...), 
    'Environment' => array(...) 
)... 

からこのクエリの結果を変換することができ、この

0 => array(
     'Network' => array(
     'id' => '38', 
     'name' => 'HP_LOW'), 
     'Esx' => array(...) 
    )... 

に目的は単に解除環境分野に、それを選択しないことではありませんデータベースのパフォーマンスを改善するためです。

ありがとうございました! シモンズ:イム」ワーキンはCakePHP 2.6.2

+0

あなたは容器に入れてみましたか? – arilia

答えて

1

を収容可能使用は

は、あなたが、その後

class Networkextends AppModel { 
    public $actsAs = array('Containable'); 
} 

を収容可能行動を有効にする必要があり、あなたのモデルに手動here

を見ますあなたができるコントローラー

$this->Network->find('all',array(
    'conditions'=>array(
     'Network.plateform'=>IAAS, 
     'Network.active'=>true), 
    'fields'=>array(
     'Network.id', 
     'Network.name'), 
    'contain'=>array(
     'Esx') 
)); 
+0

くそー、私は "含む"を見て試しましたが、私はモードでアクターを逃しました... ありがとう! –

関連する問題