簡體   English   中英

創建具有許多一對多關系的DAO查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM