2010-10-04 38 views
0

我試圖在兩個模型中查找條件。這可能嗎 ?cakephp - 通過多個模型查找條件

$offices = $this->User->Org->find('first', array(
      'conditions' => array(
       "or" => array(
        'Org.website LIKE' => $match, 
        'Domain.domain' => $match 
       ) 
      ) 
     )); 

的關係是這樣的

'Domain' => array(
     'className' => 'Domain', 
     'foreignKey' => 'org_id', 
    ), 

作爲中可容納的搜索

$this->User->Org->Behaviors->attach('Containable'); 
     $offices = $this->User->Org->find('first', array(
      'contain' => array(
       'Domain' => array(
        'conditions' => array(
         'Or' => array(
         'Domain.domain' => $match 
        ) 
         ) 
        ), 
        'Office' => array(
         'fields' => array('Office.id', 'Office.city') 
         ) 
      ), 
      'conditions' => array(
       "or" => array(
       'Org.website' => $match 
      ) 
      ) 
     )); 

感謝

亞歷

+0

對單個元素數組使用'OR'可能是個問題。還要注意,在你的第一個例子中,你使用'Org.website LIKE',但在第二個例子中沒有'LIKE'。 – Adam 2010-10-04 13:35:54

+0

我會在哪裏放置條件以便我可以比較域名和網站?謝謝,亞歷克斯 – Alex 2010-10-04 13:38:15

回答

3

這是可能的,只要你重新水平cursion被適當設置,但我強烈建議使用Containable Behavior這樣的東西。它使這件事變得瑣碎,可讀和手術(你得到你需要的東西,只有你需要)。

+0

感謝您的回覆我最初嘗試過,但無法獲得或部分工作。我已經添加了我對這個問題所做的一切。我做錯了什麼? – Alex 2010-10-04 12:30:58

+0

使用蛋糕查找複雜的查詢可能會令人失望。我通常自己編寫查詢並使用$ this-> Model-> query()函數。這爲我節省了很多時間 – Tal 2014-04-08 18:48:34