Çoklu model arasında (CakePHP'ye 1.2.5) koşullu deyimi Bina

2 Cevap php

Kullanıcı, Bölge, Ülke: Diyelim ki 3 model var diyelim.

User belongsTo Region
Region belongsTo Country

Bu modellerin her biri Containable davranışları kullanıyor. Ben kodu 'ABD' ile ülkeden kullanıcıları bulmak için çalışılıyor. İşte çalışılıyor ne:

$users = $this->User->find('all', array(
    'conditions' => array('Country.code' => 'US'),
    'contain'    => array('Region.Country'),
));

CakePHP 2 sorguları içine bu ayıran:

  1. Birincisi, bu kod 'ABD' tüm ülkeler için kimlikleri seçmektir.
  2. Sonra region.country_id ülke kimlikleri önceden alınmış bu listede olduğu tüm kullanıcılar bölgeleri katılmadan SEÇ için bu kimlikleri kullanıyor.

Sonuç olarak, benim conditions dizisi Country.code bir başvuru içerir beri benim app SQL hataları ile sonuna kadar ve Kek inşa ikinci sorgu ülkeleri KATILIN değildir.

Gördüğüm en iyi Kek çözüm kılavuzun Complex Find Conditions kısmında açıklveığı gibi bir alt sorgu inşa etmektir. Ancak, bu çok dolambaçlı görünüyor, ve ben uygulamak istiyorum daha kesmek daha fazladır. Ben bakan değilim daha kolay bir yolu var mı?

2 Cevap

Nate Abele (CakePHP eski kurşun dev) ad hoc joins, hangi yardımcı olabilir yapıyor hakkında bir makale yazdı.

De içeren içindeki koşulları koyun. Örn:

$users = $this->User->find('all', array('contain' => array(
    'Region' => array(
        'Country' => array(
            'conditions' => array('Country.code' => 'US'),
        ),
    ),
)));

the Containable manual ikinci-to-son örneğe bakın