我正在使用 PHP 和 MySQL 开发一个 Web 应用程序。我有一个名为 User 的实体,其中有许多一对多的关系(与其他对象)(地址列表、电子邮件列表、电话号码列表等)。这些地址、电子邮件、电话号码通过数据库中的连接表(user_link_addresses、user_link_emails 等)提供给用户。
我现在正在尝试为用户实体创建一个高效的 DAO,特别是方法 readUserById($userId) 和 readAllUsers()。但是,由于我是 sql 和 DAO 模式的业余爱好者,因此无法正确创建此 DAO。
有人告诉我,将您的 DAO 保留在一个查询中,该查询一次读取所有信息,然后可以相应地映射到该实体,这对于网络效率很重要。这确实有道理,但我无法生成一个查询,该查询包含所有内容的必要信息并且可以正确映射到我的实体。
现在,我可以通过在获取用户后在一个循环中执行多个查询来获取此信息......我只是不喜欢这个想法(而且我确信它不正确)。此外,我知道如何使用联结表进行连接 - 只是不使用如此复杂且需要正确映射的东西。
表名和字段
表:用户字段:用户 ID、用户名、密码
表:地址字段:address_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
无论如何,非常感谢所有帮助,
史蒂夫