[英]Creating a DAO Query with many One-to-Many Relationships?
我正在使用PHP和MySQL開發Web應用程序。 我有一個名為User的實體,其中具有許多一對多的關系(與其他對象)(地址列表,電子郵件列表,電話號碼列表等)。 通過數據庫中的聯結表(user_link_addresses,user_link_emails等)將許多地址,電子郵件,電話號碼提供給用戶。
我現在正在嘗試為用戶實體創建有效的DAO,特別是方法readUserById($ userId)和readAllUsers()。 但是,由於我是sql和DAO模式的業余愛好者,因此無法正確創建此DAO。
有人告訴我,對於網絡效率而言,重要的是使您的DAO只能一次查詢所有信息,然后可以將其映射到該實體的查詢。 這確實是有道理的,但是我很難生成一個查詢,該查詢包含所有內容的必要信息,並且可以正確映射到我的實體。
現在,我可以通過在吸引用戶之后在循環中執行多個查詢來獲取此信息……我只是不喜歡這個主意(而且我確定它是不正確的)。 另外,我知道如何與聯結表進行聯接-而不是與這種復雜的聯接,並且還需要正確映射。
表:用戶字段:user_id,用戶名,密碼
表格:地址欄位:地址ID,街道,城市,州,郵政編碼,類型
表格:電子郵件字段:email_id,電子郵件,類型
表格:phone_number字段:phone_number_id,area_code,phone_number,類型
-協會的聯結表-
表格:user_link_address字段:user_id,address_id
表格:user_link_email字段:user_id,email_id
表格:user_link_phone_number字段:user_id,phone_number_id
無論如何,我們將不勝感激所有幫助,
史蒂夫
有時值得在查詢中包含關聯,有時則不然。 Ruby on Rails有一個非常簡潔的插件,可以在您的應用程序運行時對其進行分析,並告訴您哪些查詢應包括關聯的模型。
您可以嘗試類似:
SELECT *
FROM `user`
INNER JOIN `user_link_addresses`
ON `user`.id = `user_link_addresses`.user_id
INNER JOIN `user_link_foo`
ON `user`.id = `user_link_foo`.user_id
如果您告訴我所有的表名和字段,我可以幫助您編寫更具體的查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.