PHP / MySQL OOP:从SQL加载复杂对象
所以我正在为房地产经纪人做一个项目.我的设计中有以下对象/
MySQL表:
Complexes Units Amenities Pictures Links Documents Events Agents 这些是上述对象之间的关系. Complexes have a single Agent. Complexes have multiple Units,Amenities,Pictures,Links,Documents,and Events. Units have multiple Pictures,and Documents. 设施,图片,链接,文档和事件都在数据库中具有必要的外键,以指定它们属于哪个单元/复合体. 我需要将必要的对象从数据库加载到PHP中,以便我可以在我的项目中使用它们. 如果我尝试在1个查询中从表中选择所有数据,使用LEFT JOINS,我将获得每个唯一单元的至少(链接数)*(图片数)*(文档数)行.添加设施和活动,我将获得所有*设施*每个复杂的事件#…不确定我想尝试处理加载到PHP中的对象. 另一种可能性是每个复杂/单元,为链接,文档,事件和便利设施执行1个单独的SQL语句 我的问题如下: 如果我正确索引所有表格,那么为每个复杂/单位执行3-5个额外查询真的是一个坏主意吗? 如果没有,我怎样才能获得加载到PHP对象中所需的数据.理想情况下,我会为单位设置如下对象: Unit Object ( [id] [mls_number] [type] [retail_price] [investor_price] [quantity] [beds] [baths] [square_feet] [description] [featured] [year_built] [has_garage] [stories] [other_features] [investor_notes] [tour_link] [complex] => Complex Object ( [id] [name] [description] etc. ) [agent] => Agent Object ( [id] [first_name] [last_name] [email] [phone] [phone2] etc. ) [pictures] => Array ( [1] => Picture Object ( ) ) [links] => Array ( [1] => Link Object ( ) ) [documents] => Array ( [1] => Document Object ( ) ) ) 我不总是需要所有这些信息,有时我只需要复杂的主键,有时我只需要代理的主键等.但我认为正确的方法是加载整个每次我实例化它的对象. 我一直在对OO PHP进行大量研究,但大多数(阅读全部)在线示例仅使用1个表.这显然无济于事,因为我正在研究的项目有很多复杂的关系.有任何想法吗?我在这里完全不合适吗? 谢谢 [UPDATE] 另一方面,通常在每个人都会看到的前端,我将需要所有的信息.例如,当有人想要关于特定复合体的信息时,我需要显示属于该复合体的所有单元,所有图片,复合体的事件以及该单元的所有图片,文档和链接. 我希望避免的是,在一个页面加载期间,执行一个查询以获得我需要的复杂.然后是另一个查询,以获得与该复合体相关联的20个单元.然后对于20个单元中的每个单元,执行图片查询,另一个用于文档,另一个用于链接等.我想一次性获取它们,一次通过数据库. [编辑2] [BENCHMARK]
总之,没有.对于每个相关表,您应该运行单独的查询.这就是大多数ORM(对象关系映射/建模)系统所能做的. 如果性能确实是一个问题(并且,基于你所说的,它将不会),那么你可以考虑使用像APC,memcache或Xcache这样的东西来缓存结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |