2016-03-22 19 views
1

Modeli Dernekler:CakePHP İçindekiler: derin koşullar nasıl ayarlanır?

  • InfoFaturamento ben InfoFaturamento tarafından geçirilen bir kimliği eşittir tüm VwClientes getirmesini istediğiniz
  • Contrato birçok ContratoCliente
  • ContratoCliente birçok VwCliente

sahiptir vardır contrato aittir parametre. Birleştirme seçeneğini kullanmadan bunu yapmak mümkün mü?

Denediğim kod budur. Her ContratoCliente döndürüyor:

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

tüm dernekler modellerinde ayarlanır.

Bunu yinelemeli seçeneğiyle yapabilirim, ancak bunu kullanmaktan hoşlanmıyorum çünkü gereksiz birçok veri döndürüyor ve yavaş. Katılanları da kullanabilirdim, ama katılımları kullanmak iyi bir uygulamadır.

cevap

1

Bu tür senaryolar için içerilemez davranış kullanmak gerçekten telaşlıdır ve çok fazla gereksiz veriyi alır. İstenmeyenleri çözmeniz ve unsetmeniz gerekebilir.

Alternatif olarak, birleşimleri kullanmanızı öneririm. Özellikle bahsettiğiniz gibi durumlar için çok daha hızlı ve daha esnek bir yol.

Aşağıdaki bağlantıları yönlendirebilecek: Bu yardımcı olur

CakePHP CookBook: Associations and joins

CakePHP: Joining multiple tables

Umut.

Peace! xD

+0

Bunun tersi olduğunu düşündüm, İçerdekileri kullan bu senaryolar için en iyi uygulama olacaktır. Teşekkür ederim. Katkıları kullanacağım. –