2012-05-07 51 views
5

我特林做到以下幾點:CakePHP的發現查詢跨多個數據源

  • 我的「公司」模型被存儲在一個「默認」的數據源。在 模型中,我設置了var $ useDbConfig ='default';
  • 我的'用戶'模型被存儲在另一個名爲 'users_db'的數據源中。在這個模型中,我設置了var $ useDbConfig ='users_db';

'公司'和'用戶'模型之間存在'belongsTo'關係。

我想做一個遞歸查找查詢,一次性爲所有公司帶回所有用戶。我有這樣的感覺,我無法像現在這樣使用Cake做到這一點。

當我嘗試以下方法:

$res2 = $this->Company->find('all', array(
       'conditions' => array('Company.id' => 1), 
       'recursive'=>2 
      )); 

我得到一個消息,它無法找到用戶表(其看在默認源): 錯誤:模型用戶表user_groups在數據源未找到默認

有什麼辦法可以做到這一點?

非常感謝您的任何幫助,您可以提供.....

kSeudo。

+1

1)你有什麼關聯?2)使用遞歸是不是想法 - 嘗試CakePHP的中容納的行爲來代替。然後,如果它仍然不起作用,請發佈它試圖運行的查詢。 – Dave

+0

hi Dave, 感謝您的回覆。 - 用戶型號belongsTo公司 - 公司型號有許多用戶 該查詢如上定義。最大的問題是公司和用戶模型存儲在不同的數據庫中。您是否認爲我仍然可以使用查詢查詢來完整返回關係完整的結果? 我會看看'Containable'是否可以幫助我。 非常感謝! – kSeudo

+0

我不是100%確定,但我相信Cake可以很好地處理多分貝查詢。您在問題中顯示的內容不是查詢 - 這是執行查詢的CakePHP代碼行。這對您編輯問題並添加實際生成的查詢將有很大幫助。 – Dave

回答

0

爲什麼不通過這個替換原來的語句:

$this->loadModel('User'); 
$res2 = $this->User->find('all', 
       array('conditions' => array('User.company_id' => 1))); 

這將產生你想要的結果。否則,如果你想要一些更整潔的東西,你可以添加一個fetch_users()函數給你的Company類,它實現了類似的邏輯。

0

好的,問題解決了。一旦我正確設置模型中的數據源,一切似乎都可以正常工作。

謝謝你們

+2

添加到此答案如何設置數據源將使這個答案更好, [接受你的回答,接受的答案使這個社區變得更好](http://meta.stackexchange.com/q/5234/150789) –