2013-01-10 29 views
1

最近幾天我一直在用cakephp玩弄我,並且試圖弄清楚不同數據源之間的關聯是如何工作的。我一直在谷歌搜索,但沒有取得太大的成功。例如,假設我有兩種模型,一種是將數據存儲在MySQL數據庫中,另一種是將數據存儲在XML文件中。他們都有HABTM設置相互連接。因此,在搜索時,系統如何加入兩個數據源,以及它的效率如何(即避免N + 1問題)?CakePHP模型關聯如何在不同的數據源之間工作

回答

0

它沒有。當您創建一個relation時,所有的功能都是構建MySQL所需的用於獲取數據的語言。

蛋糕與這個關係如何等同於MySQL通常提取的實際數據無關。

+0

那麼,這是否意味着MySQL數據庫被搜索過,然後使用結果數據從XML數據文件中提取數據? – topherg

+0

在cakephp中沒有任何東西將xml用作數據源。鏈接xml和mysql沒有任何東西可用。 – dogmatic69

+1

除了XML之外,其他數據源類型如何?那麼MySQL和Postgres/MSSQL/LDAP/JSON,還是這個故事呢? – topherg

0

我只是用蛋糕3.

我使用的Postgres和我的數據駐留在我定義爲不同的數據源不同的模式,跑進類似的問題。爲了使關係正常工作,我不得不補充表格定義來發布單獨的查詢來加入數據。

這裏是我的AccountsTable關係定義存儲在comp_x.accounts屬於存儲在public.banks

$this->belongsTo('Banks', [ 
     'foreignKey' => 'bank_id', 
     'strategy' => 'select' // this is the change I made 
]); 

這樣的蛋糕使得單獨的查詢來獲取銀行數據銀行,而不是嘗試在同一查詢中加入到不存在的表comp_x.banks。

在您提到的問題中,您提到了HABTM關係。我相信它可能是相似的。由於我尚未在大型數據集上對其進行測試,因此我沒有什麼要補充的。