2012-04-30 14 views
3

我知道在PHP中有一個好的做法,在課堂上有數據庫表。所以,如果一個數據表的一個類和記錄是對象,那麼連接怎麼樣?

$myTable = new DbTable_Users(); 
$res = $myTable->doQuery(); 
. 
. 
$res->getID(); 
$res->getNAME(); 

但如果我看到一個結果集,可以有JOIN,所以混合字段。一個類不能擴展2個類。那麼如何躲避這個?

$res = Factory::doQuery ('SELECT * FROM A LEFT JOIN B ON A.ID = B.ID'); 
// A fields => ID, FIELD1, FIELD2 
// B fields => ID, DATE, FIELD2 

$res->getID(); - **now which field?? A.ID or B.ID** ?? 
+1

你能舉一個小例子嗎? – Leri

+0

** offtopic:** _A class不能擴展2個class._'class first {}'然後'class second extend first {}'然後'class third extends second {}'.. ta da,third class extends two類 – miro

回答

1

有各種方法設計所謂的複合模型(其中一些字段實際上可能與另一個表相關)。對於我來說,最明確的方式是將數據庫表/映射器設計爲一種類型的類,而將域模型設計爲另一種類型的類;後者會前者用作的積木。

1

我自己的意見就如何實現這一類型的數據應及時治療和組織:

DbTable_Users對象應該是一個User對象。它應該包含關於一個用戶的信息(假定數據庫中有一行數據)。您可能希望爲一組用戶對象設置一個Users(複數)對象。但是,array($user1, $user2, $user3)可能適合你。

讓我們假設您有一個Post對象用於由用戶進行發佈。而且,您想要獲取用戶提供的所有信息及其所有信息。通常情況下,這將是某種形式的連接查詢:

SELECT * FROM users INNER JOIN posts ON users.id = posts.user_id WHERE users.id = 1; 

內部,這將創建一個單一的User對象和多個Post對象來表示將數據從加盟返回。您將通過$user->posts訪問此信息。

相關問題