2016-03-22 9 views
1

モデルアソシエーションCakePHP Containable:深い条件の設定方法は?

  • InfoFaturamentoは、私はInfoFaturamentoがで渡されたIDに等しいすべてのVwClientesを取得したい
  • Contratoが多くContratoCliente
  • ContratoClienteが多くVwCliente

を持っていContrato属しますパラメータ。結合オプションを使用せずにこれを行うことは可能ですか?

これは私が試したコードです。これは、すべてのContratoCliente戻っています:

$test = $this->InfoFaturamento->Contrato->ContratoCliente->find('all', [ 
    'contain' => [ 
     'Contrato' => [ 
      'InfoFaturamento' => [ 
       'conditions' => [ 
        'InfoFaturamento.id' => $idInfoFaturamento 
       ] 
      ] 
     ] 
    ], 
]); 
debug($test); die(); 

すべての関連付けがモデルに設定されています。

私は再帰オプションでこれを行うことができますが、不要なデータがたくさん返され、遅いので、これを使用したくありません。私も結合を使用することができますが、結合を使用するのは良い方法ですか?

答えて

1

このようなシナリオに対応可能な動作を使用することは本当に忙しいことであり、多くの不要なデータを取得します。不要なバインドを解除したり解除したりする必要があります。

代わりに、私はあなたがジョインを使用することをお勧めします。それはあなたが言及したような状況のために、はるかに速く、より柔軟な方法です。

あなたはこれらのリンクを参照できます。

CakePHP CookBook: Associations and joins

CakePHP: Joining multiple tables

は、この情報がお役に立てば幸いです。

平和! xD

+0

私はそれが反対であると考えました。これらのシナリオではContainableがベストプラクティスとなるでしょう。ありがとうございました。私は結合を使用します。 –

関連する問題